শিশু এনজি-রিপিট থেকে পিতামাতার এনজি-রিপিটের অ্যাক্সেস সূচক


218

সন্তানের তালিকার (foos.bars) ফাংশন কলের আর্গুমেন্ট হিসাবে আমি পিতামাতাল তালিকার সূত্রটি (foos) ব্যবহার করতে চাই।

আমি একটি পোস্ট পেয়েছি যেখানে কেউ $ পিতামাতা $ সূচক ব্যবহার করার পরামর্শ দেয় তবে $indexএটি কোনও সম্পত্তি নয় $parent

আমি কীভাবে পিতামাতার সূচকটি অ্যাক্সেস করতে পারি ng-repeat?

<div ng-repeat="f in foos">
  <div>
    <div ng-repeat="b in foos.bars">
      <a ng-click="addSomething($parent.$index)">Add Something</a>
    </div>
  </div>
</div>

2
এটি আমার জন্য সঠিকভাবে কাজ করছে বলে মনে হচ্ছে। এটিকে কাজ করে দেখানোর জন্য আমি একটি প্লাঙ্কার লিখেছি: plnkr.co/edit/BenCDh4NUGPPHKWGsGMr?p=preview আপনি আরও বিশদ সরবরাহ করতে পারবেন?
পাইরান

এটার জন্য ধন্যবাদ. এটি আমার সমস্যাটি আমার মার্কআপে একটি বাগ ছিল তা সন্ধান করতে পরিচালিত করেছিল।
কোডার 1

@ কোডার 1, দয়া করে এই প্রশ্নটি মুছে ফেলার বিষয়ে বিবেচনা করুন।
রাজকোক

7
@ মার্করাজাকক আমি গত রাতে এটি বিবেচনা করেছি, তবে ভেবেছিলাম এটি কীভাবে এটি করা যায় তা অনুসন্ধান করার জন্য এটি অন্যদের পক্ষে সহায়ক হবে, তাই আমি এটি ছেড়ে দিয়েছি।
কোডার 1

2
ঠিক আছে, আপনি যদি এটি রাখতে চান তবে দয়া করে একটি উত্তর যুক্ত করুন এবং এটি গ্রহণ করুন (সুতরাং এই প্রশ্নটি "উত্তর না দেওয়া" তালিকায় থাকে না)।
মার্ক রাজকক

উত্তর:


279

আমার উদাহরণ কোডটি সঠিক ছিল এবং সমস্যাটি আমার আসল কোডে অন্যরকম ছিল। তবুও, আমি জানি যে এর উদাহরণগুলি খুঁজে পাওয়া শক্ত ছিল তাই অন্য কেউ যদি সন্ধান করে তবে আমি তার উত্তর দিচ্ছি।

<div ng-repeat="f in foos">
  <div>
    <div ng-repeat="b in foos.bars">
      <a ng-click="addSomething($parent.$index)">Add Something</a>
    </div>
  </div>
</div>

13
এছাড়াও- এটি আমাকে কিছুক্ষণ ছুড়ে ফেলেছে। আপনার কোডের মধ্যে যদি কোনও ডেটা-এনজি-স্যুইচ নির্দেশিকা থাকে তবে আপনাকে একটি অতিরিক্ত স্কোপ স্তর- ($ পিতামাতা $ পিতা $ পিতা $ সূচক) যেতে হবে up সুন্দর নয়, আমি জানি।
হেয়ারগামি_মাস্টার

একমত। আমার get পিতামাতাকে $ পিতা বা মাতা pass উত্তীর্ণ হওয়া দরকার correct সঠিক মান পেতে আমার নিয়ামক ফাংশনে সূচক তবে তারপরে আমার এনজি-শোকে $ প্যারেন্ট $ সূচকে আবদ্ধ করুন। আমার কাছে কৌণিক বাগের মতো মনে হচ্ছে
অ্যান্ড্রু গ্রে

এনজি-রিপিটের সাথে আমার যদি একটি সংগ্রহের পুনরাবৃত্তি থাকে তবে আমি কী এই জাতীয় কিছু করতে পারি? স্পষ্টতই এটি একই কাজ করে অপরিবর্তিত রয়েছে
আলী সাদিক

6
কেবল যোগ করার জন্য - ng-ifকোডটি আপনার সবেমাত্র যেমনটি পেয়েছি ঠিক তেমন একটি আপনার কাছে পিতা বা মাতা প্রয়োজন need
প্লাস্টি গ্রোভ

@ প্লাস্টিগ্রোভ এটি নির্দেশ করে ng-ifএবং অতিরিক্ত $parentরেফারেন্সের জন্য আপনাকে ধন্যবাদ । আমার কিছু মাথা ব্যথা বাঁচিয়েছে
iiminov

219

এনজি-রিপিট ডক্স অনুসারে http://docs.angularjs.org/api/ng.directive:ng পুনরাবৃত্তি , আপনি আপনার পছন্দসই পরিবর্তনশীল মধ্যে কী বা অ্যারে সূচক সংরক্ষণ করতে পারেন।(indexVar, valueVar) in values

যাতে আপনি লিখতে পারেন

<div ng-repeat="(fIndex, f) in foos">
  <div>
    <div ng-repeat="b in foos.bars">
      <a ng-click="addSomething(fIndex)">Add Something</a>
    </div>
  </div>
</div>

$ পিতামাতার $ সূচকের সাথে একটি স্তর এখনও বেশ পরিষ্কার things

দ্রষ্টব্য: $indexপ্রতিটি স্কোপে সংজ্ঞায়িত করা অবিরত থাকবে, এটি দ্বারা প্রতিস্থাপন করা হবে না fIndex


আমি নোট বুঝতে পারি না। সত্য নয় বলে এই প্রশ্নের পুরো পয়েন্টটি কি নয়?
অ্যাডাম-বেক 20

16
এটি যাচাই করা উত্তর হওয়া উচিত কারণ এটি $parent.$indexএকের চেয়ে পরিষ্কার
tdebroc

1
@ আদম-Beck আমি মনে করি তারা মানে যখন এই ব্যবহার (fIndex, f)পদ্ধতি, $ সূচক এখনও সংজ্ঞায়িত করা হবে (বাদ দেওয়া নয়) - তাই সূচক উভয় হিসাবে প্রবেশযোগ্য হয়ে $indexএবং fIndex
স্যামুয়েল জেস্কে

1
আমার ক্ষেত্রে, ব্যবহার করা $indexকাজ করে না, তবে যুক্তগুলি যুক্ত fIndexকরে। কেন $index কাজ করে না সে সম্পর্কে আমার একটি ক্লুও নেই (এটি আমার কোডে অন্য জায়গাগুলিতেও ঘটে) তবে বেশ কয়েক দিন লড়াই করার পরে আমি যখন এই উত্তরটি পেয়েছি তখন যত্ন নেওয়া বন্ধ করে দিয়েছি। আপনার একাধিক ng-repeatএস আইএমও থাকাকালীন এটি কিছুটা বেশি পঠনযোগ্য ।
Krøllebølle

@ ক্র্ললেব্লল কারণ দেখেন যেভাবে এটি কাজ করে তা হ'ল প্রতিটি ng-repeatপুনরাবৃত্তি তার নিজস্ব স্কোপ তৈরি করে যা $indexপিতামাতার উপরে ওভাররাইট করে এটির নিজস্ব ব্যাখ্যাও করে $index। আপনি যদি {{$index}}অভ্যন্তরীণতম ng-repeatউপাদানটির উপরে বা নীচে ডান অন্তর্ভুক্ত করেন তবে আপনি পিতামাতার মান দেখতে পাবেন এবং এটি অন্তর্নিহিত- ng-repeatএল্ড উপাদানটির মধ্যে রাখলে আপনি সন্তানের দেখাতে পারবেন। এই উত্তরের পন্থাটি ব্যবহার করা কেবলমাত্র তার পরিবর্তকের কাছে প্যারেন্ট সূচককে নির্ধারিত করে যার নাম আপনি বেছে নিয়েছেন ( fIndex) সুতরাং এটি কোনও বাচ্চার সুযোগে ওভাররাইট হবে না।
tavnab

44

অনুরূপ প্রশ্নের আমার উত্তরটি একবার দেখুন ।
এলিয়াস করে $indexআমাদের মতো ক্রেজি স্টাফ লিখতে হবে না $parent.$parent.$index


এনজি- আরআইএম $parent.$indexব্যবহার করছে আরও মার্জিত সমাধানের উপায় :

<ul ng-repeat="section in sections" ng-init="sectionIndex = $index">
    <li  class="section_title {{section.active}}" >
        {{section.name}}
    </li>
    <ul>
        <li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu(sectionIndex)" ng-repeat="tutorial in section.tutorials">
            {{tutorial.name}}
        </li>
    </ul>
</ul>

প্লাঙ্কার: http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info


3
এছাড়াও এটি নিরাপদ! আপনি যদি লুপটির
গঞ্জালন

আমাকে সেকশনআইডেক্স = $ পিতামাতা $ সূচকটি করতে হয়েছিল
বিয়ানওয়াহ

আপনি পুনরাবৃত্তির অ্যারেতে থাকা কোনও উপাদানটি মুছে ফেললে পরিবর্তনশীল আপডেট হয় না। $ সূচক এবং $ পিতামাতা $ সূচক সর্বদা নিরাপদ পছন্দ
ভরথ ভান্ডারকর

12

আপনি নিম্নলিখিত কোড দ্বারা গ্র্যান্ড প্যারেন্ট সূচক নিয়ন্ত্রণ পেতে পারেন

$parent.$parent.$index

1
এটি আমার প্রকল্পের জন্য ভাল কাজ করে। দুর্দান্ত সমাধান দেওয়ার জন্য আপনাকে ধন্যবাদ!
ক্যানেট রবার্ন

এটি বাহ্যিক নয়, দৃশ্যত।
গণেশ ভেলানকি

দুর্ভাগ্যক্রমে, এটি কিছুটা বৈশিষ্ট্য enর্ষার একটি উদাহরণ এবং স্পষ্টতই সমস্যাযুক্ত অনেক ক্ষেত্রে।
চিফ টুপেনসিলস


0

multiple একাধিক বাবা-মা থাকলে বাবা-মা কাজ করে না। এর পরিবর্তে আমরা ইনপিতে একটি প্যারেন্ট সূচক ভেরিয়েবল সংজ্ঞায়িত করতে পারি এবং এটি ব্যবহার করতে পারি

<div data-ng-init="parentIndex = $index" ng-repeat="f in foos">
  <div>
    <div data-ng-init="childIndex = $index" ng-repeat="b in foos.bars">
      <a ng-click="addSomething(parentIndex)">Add Something</a>
    </div>
  </div>
</div>

Vucalur এর উত্তর দেখুন এখানে এটিও উল্লেখ করে। সাধারণভাবে এটি আইএমওতে যাওয়ার সঠিক উপায় এবং সাধারণত এনজি-থ্রির জন্য সঠিক ব্যবহার। যখনই আপনার কোডটির প্রসঙ্গ পরিবর্তন হয় আপনি যখন লোকেরা $ পিতামাতার কাছে পৌঁছাচ্ছেন তখন আপনি সমস্যার জন্য জিজ্ঞাসা করছেন।
শানুহসাইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.