এনজি-পুনরাবৃত্তি সমাপ্ত ইভেন্ট


207

আমি টেবিলের সাথে ডিভকে লক্ষ্য করে কিছু jQuery ফাংশন কল করতে চাই। সেই টেবিলটি জনবহুল ng-repeat

আমি যখন এটি কল

$(document).ready()

আমার কোন ফল নেই।

এছাড়াও

$scope.$on('$viewContentLoaded', myFunc);

সাহায্য করে না

এনজি-রিপিট জনসংখ্যা সম্পূর্ণ হওয়ার পরে ঠিক কি কার্য সম্পাদনের কোনও উপায় আছে? আমি কাস্টম ব্যবহার সম্পর্কে একটি পরামর্শ পড়েছি directive, তবে এনজি-রিপিট এবং আমার ডিভ দিয়ে কীভাবে এটি ব্যবহার করব তা আমার কোনও ধারণা নেই ...

উত্তর:


241

প্রকৃতপক্ষে, আপনাকে নির্দেশাবলী ব্যবহার করা উচিত এবং এনজি-রিপিট লুপের শেষে কোনও ইভেন্ট বাঁধা নেই (প্রতিটি উপাদান স্বতন্ত্রভাবে নির্মিত হয়, এবং এটির নিজস্ব ইভেন্ট রয়েছে)। তবে ক) নির্দেশিকা ব্যবহারের প্রয়োজন হতে পারে আপনার প্রয়োজন এবং খ) কয়েকটি এনজি-পুনরাবৃত্তি নির্দিষ্ট বৈশিষ্ট্য রয়েছে যা আপনি আপনার "এনজিপিপিট সমাপ্ত" ইভেন্টটি তৈরি করতে ব্যবহার করতে পারেন।

বিশেষত, আপনার সমস্ত কিছু যদি টেবিলের পুরো অংশে ইভেন্টগুলি স্টাইল করা / যুক্ত করা হয় তবে আপনি এমন নির্দেশের সাহায্যে এটি করতে পারেন যা সমস্ত এনজিপিপিট উপাদানগুলিকে অন্তর্ভুক্ত করে। অন্যদিকে, আপনি যদি প্রতিটি উপাদানকে বিশেষভাবে সম্বোধন করতে চান, আপনি এনজিপিটাইটের মধ্যে একটি নির্দেশিকা ব্যবহার করতে পারেন এবং এটি তৈরি হওয়ার পরে এটি প্রতিটি উপাদানটিতে কাজ করবে।

তারপর, আছে $index, $first, $middleএবং $lastবৈশিষ্ট্য আপনি ট্রিগার ঘটনা ব্যবহার করতে পারেন। সুতরাং এই এইচটিএমএল জন্য:

<div ng-controller="Ctrl" my-main-directive>
  <div ng-repeat="thing in things" my-repeat-directive>
    thing {{thing}}
  </div>
</div>

আপনি এর মতো নির্দেশাবলী ব্যবহার করতে পারেন:

angular.module('myApp', [])
.directive('myRepeatDirective', function() {
  return function(scope, element, attrs) {
    angular.element(element).css('color','blue');
    if (scope.$last){
      window.alert("im the last!");
    }
  };
})
.directive('myMainDirective', function() {
  return function(scope, element, attrs) {
    angular.element(element).css('border','5px solid red');
  };
});

এটি এই প্লাঙ্কারের ক্রিয়াতে দেখুন । আশা করি এটা সাহায্য করবে!


আমি কি myMainDirectiveলুপ শেষ হওয়ার পরে কোডটি কার্যকর করতে পারি ? প্যারেন্ট ডিভের স্ক্রোলবারটি আমার আপডেট করতে হবে।
ChruS

2
অবশ্যই! একটি ইভেন্ট ফায়ারিং ফাংশনে কেবল "উইন্ডো.এলার্ট" পরিবর্তন করুন এবং এটি প্রধান নির্দেশের সাথে ধরুন। আমি উদাহরণস্বরূপ এটি করার জন্য ডি প্লাঙ্কারকে আপডেট করেছি।
টিয়াগো রোলডো

9
প্রথমে jQuery লাইব্রেরি অন্তর্ভুক্ত করার পরামর্শ দেওয়া হয় (কৌণিক আগে)। এটি সমস্ত কৌণিক উপাদানগুলিকে jQuery (জকিএলাইটের পরিবর্তে) দিয়ে মুড়িয়ে দেবে। তারপরে কৌণিক.এলিমেন্ট (উপাদান) .এসএসএস () এবং $ (উপাদান)। শিশুদের ()। সিএসএস () এর পরিবর্তে আপনি কেবল উপাদান সিএসএস () এবং এলিমেন্ট.চিল্ডেন ()। সিএসএস () লিখতে পারেন। আরও দেখুন google.google.com/d/msg/angular/6A3Skwm59Z4/oJ0WhKGAFK0J
মার্ক রাজকক

11
এনজিআরপিট ডাইরেক্টিভের পরবর্তী রেন্ডারদের জন্য এটি কীভাবে কাজ করতে হয় তার কোনও ধারণা কী? যেমন: লিঙ্ক
রাভেনহর্সটি

1
এটি সমস্ত কৌণিক নির্দেশাবলীর নামকরণের সম্মেলন। দেখুন docs.angularjs.org/guide/directive#normalization
টিয়াগো Roldão

68

যদি আপনি কেবল লুপের শেষে কিছু কোড সম্পাদন করতে চান তবে এখানে কিছুটা সহজ প্রকরণ যা অতিরিক্ত ইভেন্ট হ্যান্ডলিংয়ের প্রয়োজন হয় না:

<div ng-controller="Ctrl">
  <div class="thing" ng-repeat="thing in things" my-post-repeat-directive>
    thing {{thing}}
  </div>
</div>
function Ctrl($scope) {
  $scope.things = [
    'A', 'B', 'C'  
  ];
}

angular.module('myApp', [])
.directive('myPostRepeatDirective', function() {
  return function(scope, element, attrs) {
    if (scope.$last){
      // iteration is complete, do whatever post-processing
      // is necessary
      element.parent().css('border', '1px solid black');
    }
  };
});

একটি লাইভ ডেমো দেখুন।


আমি যদি সিনট্যাক্স হিসাবে নিয়ামককে ব্যবহার করি তবে এটি কি কাজ করবে? অনুগ্রহ? না, অন্য কোনও উপায় যা নিয়ামকের সাথে কাজ করে?
ড্যান এনগুইন

63

বিশেষ করে কেবলমাত্র একটি ng-repeatসম্পূর্ণ ইভেন্ট তৈরি করার জন্য কোনও নির্দেশিকা তৈরি করার দরকার নেই ।

ng-init আপনার জন্য যাদু না।

  <div ng-repeat="thing in things" ng-init="$last && finished()">

এটি $lastনিশ্চিত করে, এটি finishedকেবল বরখাস্ত হয়, যখন শেষ উপাদানটি ডিওমে দেওয়া হয়।

$scope.finishedইভেন্ট তৈরি করতে ভুলবেন না ।

শুভ কোডিং !!

সম্পাদনা: 23 অক্টোবর 2016

যদি আপনার কাছে কল করতে চান finishedযখন অ্যারের মধ্যে কোন আইটেম তারপর আপনি নিম্নলিখিত ব্যবহার করতে পারেন ফাংশন কার্যসংক্রান্ত

<div style="display:none" ng-init="things.length < 1 && finished()"></div>
//or
<div ng-if="things.length > 0" ng-init="finished()"></div>

ng-repeatউপাদানটির শীর্ষে কেবল উপরের লাইনটি যুক্ত করুন । এটি অ্যারের কোনও মান রাখছে না কিনা তা পরীক্ষা করে এটি অনুসারে ফাংশনটি কল করবে।

যেমন

<div ng-if="things.length > 0" ng-init="finished()"></div>
<div ng-repeat="thing in things" ng-init="$last && finished()">

"জিনিস" খালি অ্যারে পরিণত হলে কী হবে?
ফ্রান্সে পোলজাক

1
@ ফ্রেণপলজাক আমি উত্তরে সমাধান যুক্ত করেছি।
বিকাশ বানসাল

1
খালি অ্যারের ক্ষেত্রে, এটি নিয়ামকটিতে হ্যান্ডেল করুন
জেএসএডডিক্ট

বিকাশ বানসালের উত্তরটি ঠিক করুন: // অ্যারের কোনও মূল্য নেই কিনা তা পরীক্ষা করতে চাইলে প্রথম ডিভ ব্যবহার করুন এবং সেই অনুযায়ী ফাংশনটিতে কল করুন। <div ng-if = "! things.length" ng-hide = "true" ng-init = "সমাপ্ত ()"> </div> <ডিভি এনজি-রিপিট = "জিনিসগুলিতে" এনজি-থ্রিম = "$ শেষ && সমাপ্ত () ">
অ্যালেক্স টেসেলঙ্কো

41

এখানে একটি পুনরাবৃত্তি সম্পন্ন নির্দেশনা যা সত্য যখন নির্দিষ্ট ফাংশনকে ডাকে। আমি খুঁজে পেয়েছি যে ডুম ডেরামের দ্বারা রেন্ডার করা উপাদানগুলিতে সরঞ্জামদণ্ডকে আরম্ভ করার মতো ডাকা ফাংশনটি অবশ্যই বিরতি = 0 সহ টাইমআউট ব্যবহার করে। জেএসফিডাল: http://jsfiddle.net/tQw6w/

$ স্কোপ.লেআউটআউট সম্পন্ন করে, $ টাইমআউট লাইনটি মন্তব্য করার চেষ্টা করুন এবং "সঠিক নয়!" টুলটিপসের পার্থক্যটি দেখতে লাইন।

<ul>
    <li ng-repeat="feed in feedList" repeat-done="layoutDone()" ng-cloak>
    <a href="{{feed}}" title="view at {{feed | hostName}}" data-toggle="tooltip">{{feed | strip_http}}</a>
    </li>
</ul>

জাতীয়:

angular.module('Repeat_Demo', [])

    .directive('repeatDone', function() {
        return function(scope, element, attrs) {
            if (scope.$last) { // all are rendered
                scope.$eval(attrs.repeatDone);
            }
        }
    })

    .filter('strip_http', function() {
        return function(str) {
            var http = "http://";
            return (str.indexOf(http) == 0) ? str.substr(http.length) : str;
        }
    })

    .filter('hostName', function() {
        return function(str) {
            var urlParser = document.createElement('a');
            urlParser.href = str;
            return urlParser.hostname;
        }
    })

    .controller('AppCtrl', function($scope, $timeout) {

        $scope.feedList = [
            'http://feeds.feedburner.com/TEDTalks_video',
            'http://feeds.nationalgeographic.com/ng/photography/photo-of-the-day/',
            'http://sfbay.craigslist.org/eng/index.rss',
            'http://www.slate.com/blogs/trending.fulltext.all.10.rss',
            'http://feeds.current.com/homepage/en_US.rss',
            'http://feeds.current.com/items/popular.rss',
            'http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml'
        ];

        $scope.layoutDone = function() {
            //$('a[data-toggle="tooltip"]').tooltip(); // NOT CORRECT!
            $timeout(function() { $('a[data-toggle="tooltip"]').tooltip(); }, 0); // wait...
        }

    })

আমি একটি $ টাইমআউট ব্যবহার করতে চাইনি, তবে আপনি যখন বলেছিলেন যে এটি 0 তে সেট করা যেতে পারে, তখন আমি চেষ্টা করে দেখলাম এবং এটি ভালভাবে কাজ করেছে। আমি ভাবছি এটি হজমের বিষয় কিনা, এবং যদি $ টাইমআউটটি without টাইমআউট না ব্যবহার করে কী করে তা করার কোনও উপায় আছে।
জমিলা হক

আপনি দয়া করে ব্যাখ্যা করতে পারেন কেন এই কাজ করে? আমি ডায়নামিক আইডি অ্যাক্সেস করার চেষ্টা করছি এবং 0 দেরি করে সময়সীমা শেষ হওয়ার পরে এটি কেবল কাজ করে। আমি এই "হ্যাকি" সমাধানটি বেশ কয়েকটি পোস্টে দেখেছি তবে এটি কেন কাজ করে তা কেউ ব্যাখ্যা করে না।
জ্বিন

30

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

<div ng-controller="MyCtrl">
    <div ng-repeat="thing in things">
        thing: {{ thing }}
    </div>
    <div ng-init="fireEvent()"></div>
</div>

myModule.controller('MyCtrl', function($scope, $timeout){
    $scope.things = ['A', 'B', 'C'];

    $scope.fireEvent = function(){

        // This will only run after the ng-repeat has rendered its things to the DOM
        $timeout(function(){
            $scope.$broadcast('thingsRendered');
        }, 0);

    };
});

মনে রাখবেন যে এটি প্রাথমিকভাবে এনজি-রিপিটেন্ড রেন্ডারগুলির পরে আপনাকে একবার কল করতে হবে এমন ফাংশনগুলির জন্য দরকারী। যখনই এনজি-রিপিট সামগ্রীগুলি আপডেট করা হয় তখন আপনাকে কোনও ফাংশন কল করতে হবে তবে আপনাকে এই থ্রেডে অন্য একটি উত্তর কাস্টম নির্দেশ সহ ব্যবহার করতে হবে।


1
সুন্দর, এই কাজটি করেছে। আমি একটি পাঠ্যবক্সে পাঠ্যটি স্বয়ংক্রিয়ভাবে নির্বাচন করতে চেয়েছিলাম এবং সময়সীমাটি কৌশলটি করেছিল। অন্যথায়, ডেটা-সীমাবদ্ধ মডেল.ভ্যালু ইনজেকশনের সময় {{মডেল.ভ্যালু}} পাঠ্যটি নির্বাচিত হয়ে যায় এবং তারপরে অনির্বাচিত হয়।
জোশগফ

27

পাভেলের উত্তরটি পরিপূরক করা , আরও পাঠযোগ্য এবং সহজেই বোধগম্য কিছু হ'ল:

<ul>
    <li ng-repeat="item in items" 
        ng-init="$last ? doSomething() : angular.noop()">{{item}}</li>
</ul>

আপনি কেন angular.noopপ্রথম স্থানে আছেন বলে মনে করেন ...?

সুবিধাদি:

এর জন্য আপনাকে কোনও নির্দেশিকা লিখতে হবে না ...


20
আপনি যখন বুলিয়ান যুক্তি ব্যবহার করতে পারেন তখন কেন একটি ত্রিভুজ ব্যবহার করবেন:ng-init="$last && doSomething( )"
নেট হুইটেকার

এটি 'নেট নেটহিটটেকার পড়ার পক্ষে সহজ (এবং কোনও টেরিনারি অপারেটরের চেয়ে পড়া আরও শক্তিশালী) চিত্তাকর্ষক। পরিষ্কার হওয়া ভাল, এবং কোড বোঝা সহজ
জাস্টিন

21

কাস্টম নির্দেশাবলীর প্রয়োজন ছাড়াই ngInitএবং লোডাসের পদ্ধতির সাথে কিছুটা সহজ পদ্ধতির হতে পারে debounce:

নিয়ন্ত্রক:

$scope.items = [1, 2, 3, 4];

$scope.refresh = _.debounce(function() {
    // Debounce has timeout and prevents multiple calls, so this will be called 
    // once the iteration finishes
    console.log('we are done');
}, 0);

টেমপ্লেট:

<ul>
    <li ng-repeat="item in items" ng-init="refresh()">{{item}}</li>
</ul>

হালনাগাদ

টের্নারি অপারেটরটি ব্যবহার করে এমনকি আরও সহজ খাঁটি AngularJS সমাধান রয়েছে:

টেমপ্লেট:

<ul>
    <li ng-repeat="item in items" ng-init="$last ? doSomething() : null">{{item}}</li>
</ul>

সচেতন থাকুন যে এনজিআইএনটি প্রাক-লিঙ্ক সংকলন পর্বটি ব্যবহার করে - অর্থাত শিশু নির্দেশাবলী প্রক্রিয়া করার আগে এই অভিব্যক্তিটি চাওয়া হয়। এর অর্থ এখনও অ্যাসিক্রোনাস প্রসেসিংয়ের প্রয়োজন হতে পারে।


এই লক্ষ করা উচিত যে এটির জন্য আপনার লডাশ.জেএস প্রয়োজন :) :) এছাড়াও: $ સ્કોপ.রেফ্রেশ = এর ", 20" অংশটি, শেষ পদ্ধতির পরে এই পদ্ধতির ডাক দেওয়ার আগে এই সংখ্যাটি কি মিলিস?
জার্জেন স্কার ফিশার

যোগ করা হয়েছে Lodash সামনে debounce লিঙ্ক। হ্যাঁ, পদ্ধতিটি কার্যকর হওয়ার আগে 20 টি বিলম্ব হচ্ছে - কলটি অ্যাসিঙ্ক হওয়ার পরে যতক্ষণ তা কল্পনা করে না তাই 0 তে পরিবর্তিত হয়।
পাভেল হোরাল

1
এছাড়াও এ সম্পর্কে চিন্তাভাবনা করা, যেমন টার্নারি অপারেটরটিকে এক্সপ্রেশনগুলিতে অনুমতি দেওয়া হয় তেমন সহজ ng-init="$last ? refresh() : false"কাজ করবে। এবং এটি এমনকি লোডাশ প্রয়োজন হয় না।
পাভেল হোরাল

<ডিভি এনজি-রিপিট = "আমি ইন [১,২,৪]" এনজি-আরিন = "ডোজ কিছু ($ শেষ)"> </ ডিভি> $ স্কোপ.ডোমোথিং = ফাংশন (লাস্ট এলিমেন্ট) {যদি (লাস্টএলেম) ব্লাহ ব্লাহ ব্লাহ }
জেএসএডিক্ট

4

scope.$lastআপনার ট্রিগারটি একটি দিয়ে মোড়ানোর জন্য যখন ভেরিয়েবলটি পরীক্ষা করা হয় তখন এটি প্রয়োজনীয়ও হতে পারে setTimeout(someFn, 0)। এ setTimeout 0জাভাস্ক্রিপ্টের একটি স্বীকৃত কৌশল এবং এটি directiveসঠিকভাবে চালানো আমার পক্ষে জরুরি।


আমি একই সমস্যা খুঁজে পেয়েছি। ব্যাকবোন + কৌণিক উভয় ক্ষেত্রেই, আপনার যদি কোনও ডিওএম উপাদান প্রয়োগ করার জন্য সিএসএস সম্পত্তি মূল্য পড়ার মতো কিছু করার দরকার হয় তবে আমি টাইমআউট হ্যাক ডব্লু / ও খুঁজে বের করতে পারি না।
চবি

3

ঘোষণামূলক বাক্য গঠন এবং বিচ্ছিন্ন সুযোগ ব্যবহার করার সময় কীভাবে এনজিআরপিট বৈশিষ্ট্যগুলিতে ($ সূচক, $ প্রথম, $ মাঝারি, $ শেষ, $ এমনকি, $ বিজোড়) অ্যাক্সেস অর্জন করবেন তা দেখানোর জন্য এটি অন্যান্য উত্তরে প্রকাশিত ধারণার উন্নতি ( একটি উপাদান-নির্দেশনা সহ গুগল সেরা অনুশীলনের প্রস্তাব দিয়েছে)। উল্লেখ্য মূল পার্থক্য: scope.$parent.$last

angular.module('myApp', [])
.directive('myRepeatDirective', function() {
  return {
    restrict: 'E',
    scope: {
      someAttr: '='
    },
    link: function(scope, element, attrs) {
      angular.element(element).css('color','blue');
      if (scope.$parent.$last){
        window.alert("im the last!");
      }
    }
  };
});

উপাদানগুলির চেয়ে আধিক্য হিসাবে নির্দেশনা ব্যবহার করা কি ভাল ধারণা হবে না? অর্থাৎ সীমাবদ্ধ: 'এ'?
তেজস্বী হেগদে

2
মোদ্দা কথাটি ছিল ঘোষণামূলক সিনট্যাক্স + বিচ্ছিন্ন স্কোপ দেখাতে ... হ্যাঁ, আপনি যদি চান তবে আপনাকে এখানে একটি অ্যাট্রিবিউট ডাইরেক্টিভ ব্যবহার করতে স্বাগত জানাই। আপনার উদ্দেশ্য উপর নির্ভর করে হয় একটি সময় এবং জায়গা আছে।
জোশুয়া ডেভিড

3

আমি এইভাবে এটি করেছি।

দিকনির্দেশনা তৈরি করুন

function finRepeat() {
    return function(scope, element, attrs) {
        if (scope.$last){
            // Here is where already executes the jquery
            $(document).ready(function(){
                $('.materialboxed').materialbox();
                $('.tooltipped').tooltip({delay: 50});
            });
        }
    }
}

angular
    .module("app")
    .directive("finRepeat", finRepeat);

আপনি লেবেলে এটি যুক্ত করার পরে যেখানে এই এনজি-রিপিট করুন

<ul>
    <li ng-repeat="(key, value) in data" fin-repeat> {{ value }} </li>
</ul>

এবং এর সাথে প্রস্তুত এনজি-রিপিট শেষে চালানো হবে।


3
<div ng-repeat="i in items">
        <label>{{i.Name}}</label>            
        <div ng-if="$last" ng-init="ngRepeatFinished()"></div>            
</div>

আমার সমাধানটি ছিল একটি ফাংশন কল করতে একটি ডিভ যুক্ত করা যদি আইটেমটি পুনরাবৃত্তিতে শেষ হয়।


2

আমি আরেকটি উত্তর যুক্ত করতে চাই, কারণ পূর্ববর্তী উত্তরগুলি বলে যে এনজিরাপিট সম্পন্ন হওয়ার পরে কোডটি চালানোর জন্য প্রয়োজনীয় কোডটি একটি কৌণিক কোড, যা সেক্ষেত্রে উপরের সমস্ত উত্তর একটি দুর্দান্ত এবং সাধারণ সমাধান দেয়, যা অন্যদের চেয়ে কিছুটা জেনেরিক, এবং এর ক্ষেত্রে ডাইজেস্ট লাইফ চক্রের পর্যায়েটি গুরুত্বপূর্ণ হলে আপনি বেন নাদেলের ব্লগটি সম্পর্কে, ইভালের পরিবর্তে ars পার্স ব্যবহার ব্যতীত এ সম্পর্কে একবার দেখতে পারেন।

তবে আমার অভিজ্ঞতা হিসাবে, ওপি যেমন বলেছে, সাধারণত এটি ফিনালি সংকলিত ডিওমে কিছু জিকিউরি প্লাগইন বা পদ্ধতিগুলি চালিত করে, সে ক্ষেত্রে আমি দেখতে পেলাম যে সবচেয়ে সহজ সমাধানটি সেটটাইমআউট দিয়ে একটি নির্দেশিকা তৈরি করা, যেহেতু সেটটাইমআউট ফাংশনটি ধাক্কা হয়ে যায় since ব্রাউজারের সারির শেষে, সবসময় কৌণিকভাবে কাজ করার পরে ডানদিকে ঠিক থাকে সাধারণত এনজিআরপিট যা তার পিতামাতার পোস্ট লিঙ্কিংয়ের পরেও অব্যাহত থাকে

angular.module('myApp', [])
.directive('pluginNameOrWhatever', function() {
  return function(scope, element, attrs) {        
    setTimeout(function doWork(){
      //jquery code and plugins
    }, 0);        
  };
});

যে কেউ ভাবছেন যে সে ক্ষেত্রে কেন $ সময়সীমা ব্যবহার করবেন না, এটি হ'ল এটি অন্য একটি হজম চক্র যা সম্পূর্ণ অপ্রয়োজনীয়


1

এনজি-রিপিট শেষ হওয়ার পরে আমাকে ম্যাথজ্যাক্স ব্যবহার করে সূত্রগুলি রেন্ডার করতে হয়েছিল, উপরের উত্তরগুলির কোনওোটাই আমার সমস্যার সমাধান করেনি, তাই আমি নীচের মত তৈরি করেছি। এটি খুব ভাল সমাধান নয় , তবে আমার জন্য কাজ করেছে ...

<div ng-repeat="formula in controller.formulas">
    <div>{{formula.string}}</div>
    {{$last ? controller.render_formulas() : ""}}
</div>

0

আমি এখানে ভাল অনুশীলন করে একটি উত্তর পেয়েছি , তবে আরও একটি বিলম্ব যোগ করার প্রয়োজন ছিল

নিম্নলিখিত নির্দেশ তৈরি করুন:

angular.module('MyApp').directive('emitLastRepeaterElement', function() {
return function(scope) {
    if (scope.$last){
        scope.$emit('LastRepeaterElement');
    }
}; });

এটিকে আপনার গুণক হিসাবে একটি পুনরায় হিসাবে যুক্ত করুন:

<div ng-repeat="item in items" emit-last-repeater-element></div>

রাদুর মতে:

$scope.eventoSelecionado.internamento_evolucoes.forEach(ie => {mycode});

আমার জন্য এটি কাজ করে তবে আমার এখনও একটি সেটটাইমআউট যুক্ত করতে হবে

$scope.eventoSelecionado.internamento_evolucoes.forEach(ie => {
setTimeout(function() { 
    mycode
}, 100); });

-4

আপনি যদি কেবল ক্লাসের নাম পরিবর্তন করতে চান তবে এটি আলাদাভাবে রেন্ডার হবে, নীচে কোডটি কৌশলটি করবে।

<div>
<div ng-show="loginsuccess" ng-repeat="i in itemList">
    <div id="{{i.status}}" class="{{i.status}}">
        <div class="listitems">{{i.item}}</div>
        <div class="listitems">{{i.qty}}</div>
        <div class="listitems">{{i.date}}</div>
        <div class="listbutton">
            <button ng-click="UpdateStatus(i.$id)" class="btn"><span>Done</span></button>
            <button ng-click="changeClass()" class="btn"><span>Remove</span></button>
        </div>
    <hr>
</div>

এই কোডটি আমার পক্ষে কাজ করেছিল যখন আমার শপিং তালিকায় স্ট্রিক ট্রট ফন্টে শপিং করা আইটেমটি রেন্ডার করার জন্য আমার অনুরূপ প্রয়োজনীয়তা ছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.