5

एचटीएमएल

<div repeater ng-repeat='item in items' class='first' id = '{{$index}}' > {{item}} </div> 

AngularJS निर्देश: -

angular.module('time', []) 
    .directive('repeater', function() { 

    var linkFn = function(scope, element, attrs){ 
     var id = $(element).attr('id'); 
     alert(id); // {{$index}} 
    } ... 

गतिशील एनजी-दोहराने के अंदर बनाया आईडी, के रूप में निर्देश प्रदर्शित करता है के अंदर पैदा {{$ सूचकांक}} के बजाय मूल्य = 0, 1, 2 ...

आप कैसे सुनिश्चित करते हैं कि निर्देशक में लिंकर फ़ंक्शन डायनामिक आईडी का निष्पादन करता है? मुझे लगता है कि यह निर्देश के अंदर $compile का उपयोग करके किया जा सकता है। लेकिन मैं बिल्कुल समझ नहीं सकता कि कैसे?

$compile(element)(scope) 

वाक्यविन्यास है। लेकिन जाहिर है गलत आदेश।

उत्तर

2

यदि आपको वास्तव में पहले से ही आबादी वाले आईडी की आवश्यकता है तो आप यह सुनिश्चित करने के लिए scope.$evalAsync या $timeout के अंदर प्रासंगिक कोड चला सकते हैं ताकि बाध्यकारी पहले अपडेट किया जा सके। मैं scope.$index का उपयोग करके, डीओएम का निरीक्षण करने और इसके किसी भी जानकारी के लिए अपने मॉडल पर निर्भर होने से बचने के लिए कड़ी मेहनत करने का सुझाव दूंगा।

आपका निर्देश पहले से संकलित होने की प्रक्रिया में है और जब आपका लिंक फ़ंक्शन पूरा हो जाता है तो मुझे लगता है कि मुझे लगता है कि recompiling मदद नहीं करेगा। यह लिंकिंग को समाप्त करने के लिए काफी देर तक प्रतीक्षा करने का एक मामला है और $digest शुरू करें जहां गुण वास्तव में अपडेट किए जाएंगे। यह वास्तव में $evalAsync आपके लिए क्या करेगा।

यहाँ उदाहरण: http://plnkr.co/edit/n77x4C?p=preview

1

मुझे आशा है कि यह तुम्हारी मदद करेगा

  1. निर्देश

    angular.module('time', []).directive('repeater', function() { 
        return{ 
          restrict:"E", 
          scope:{ 
           itemarray: "=itemarray" 
          } 
          template:"<div ng-repeat='item in itemarray' class='first' id = '{{$index}}' > {{item}} </div>", 
          link:linkFn 
         } 
          var linkFn = function(scope, element, attrs){ 
         var id = $(element).attr('id'); 
         alert(id); // {{$index}} 
    

    } ...

  2. एचटीएमएल

     <repeater itemarray='itemarray"></repeater> 
    
+0

यह बहुत ही अभिनव है लेकिन मुझे डर है कि यह काम नहीं करता है। {{Item}} की गणना होने से पहले लिंकर फ़ंक्शन का निष्पादन होता है। –

+0

http://jsfiddle.net/Nishchit14/Gf4tq/3/ यहां काम कर रहा है jsfiddle –

+0

http://jsfiddle.net/Gf4tq/4/ आईडी के लिए अलर्ट देखें, जिसमें {{$ index}} है। –

संबंधित मुद्दे