ব্যবহার $index
বেসিক ক্ষেত্রে পুরোপুরি ভাল কাজ করে , এবং @ Charlietfl এর উত্তর দুর্দান্ত। তবে মাঝে মাঝে $index
যথেষ্ট হয় না।
আপনার একটি একক অ্যারে কল্পনা করুন যা আপনি দুটি ভিন্ন এনজি-রিপিটসে উপস্থাপন করছেন। সেই এনজি-রিপিটগুলির মধ্যে একটি হ'ল সত্যবাদী সম্পত্তি থাকা বস্তুর জন্য ফিল্টার করা হয় এবং অন্যটি মিথ্যা সম্পত্তির জন্য ফিল্টার করা হয়। দুটি পৃথক ফিল্টার করা অ্যারে উপস্থাপন করা হচ্ছে, যা একক আসল অ্যারে থেকে প্রাপ্ত। (অথবা, যদি এটি কল্পনা করতে সহায়তা করে: সম্ভবত আপনার একক লোক রয়েছে, এবং আপনি সেই অ্যারেতে থাকা মহিলাদের জন্য একটি এনজি-পুনরাবৃত্তি চান এবং অন্যটি একই অ্যারের পুরুষদের জন্য )) আপনার লক্ষ্য: নির্ভরযোগ্যভাবে মুছে ফেলা থেকে ফিল্টার করা অ্যারের সদস্যদের কাছ থেকে তথ্য ব্যবহার করে মূল অ্যারে।
এই ফিল্টার করা অ্যারেগুলির প্রত্যেকটিতে, $ সূচকটি মূল অ্যারের মধ্যে থাকা আইটেমের সূচক হবে না। ফিল্টারকৃত সাব-অ্যারেতে এটি সূচক হবে । সুতরাং, আপনি মূল people
অ্যারেটিতে ব্যক্তির সূচকটি বলতে সক্ষম হবেন না , আপনি কেবলমাত্র sub সূচকটি women
বা men
উপ-অ্যারে থেকে জানেন । এটি ব্যবহার করে মোছার চেষ্টা করুন এবং আপনি যেখানে চেয়েছিলেন সেখানে বাদে আপনার কাছে আইটেমগুলি অদৃশ্য হয়ে যাবে। কি করো?
আপনি যদি ভাগ্যবান হন তবে কোনও ডেটা মডেল ব্যবহার করে প্রতিটি বস্তুর জন্য একটি অনন্য শনাক্তকারী অন্তর্ভুক্ত থাকে, তবে অবজেক্টটি এবং splice
এটি মূল অ্যারের বাইরে খুঁজে বের করতে $ সূচীর পরিবর্তে এটি ব্যবহার করুন । (নীচে আমার উদাহরণটি ব্যবহার করুন তবে সেই অনন্য শনাক্তকারীর সাথে।) তবে আপনি যদি এত ভাগ্যবান না হন?
কৌণিক প্রকৃতপক্ষে প্রতিটি আইটেমকে এনজি-পুনরাবৃত্ত অ্যারে (মূল, মূল অ্যারেতে) বলা হয় এমন একটি অনন্য সম্পত্তি দিয়ে বাড়িয়ে তোলে $$hashKey
। আপনি $$hashKey
যে আইটেমটি মুছতে চান তাতে ম্যাচের জন্য মূল অ্যারেটি অনুসন্ধান করতে পারেন এবং সেভাবে এ থেকে মুক্তি পান।
নোট যেটি $$hashKey
বাস্তবায়নের বিশদ, এনজি-রিপিটের জন্য প্রকাশিত এপিআইতে অন্তর্ভুক্ত নয়। তারা যে কোনও সময় এই সম্পত্তিটির জন্য সমর্থন সরাতে পারে। তবে সম্ভবত না। :-)
$scope.deleteFilteredItem = function(hashKey, sourceArray){
angular.forEach(sourceArray, function(obj, index){
// sourceArray is a reference to the original array passed to ng-repeat,
// rather than the filtered version.
// 1. compare the target object's hashKey to the current member of the iterable:
if (obj.$$hashKey === hashKey) {
// remove the matching item from the array
sourceArray.splice(index, 1);
// and exit the loop right away
return;
};
});
}
সাথে আহ্বান:
ng-click="deleteFilteredItem(item.$$hashKey, refToSourceArray)"
সম্পাদনা: $$hashKey
এটির মতো একটি ফাংশন ব্যবহার করে, যা কোনও মডেল-নির্দিষ্ট সম্পত্তি নামের পরিবর্তে কীগুলি ব্যবহার করে , এটি বিভিন্ন মডেল এবং প্রসংগে জুড়ে এই ফাংশনটিকে পুনরায় ব্যবহারযোগ্য করে তোলার উল্লেখযোগ্য যুক্ত সুবিধা রয়েছে advantage এটি আপনার অ্যারে রেফারেন্স এবং আপনার আইটেম রেফারেন্স সহ সরবরাহ করুন এবং এটি ঠিক কাজ করা উচিত।