ng-repeat איך ניגשים לאיבר הספציפי?
-
כל אלמנט נוצר ומשתמש במידע שהוצמד לאוביקט מתוך אוביקטים רבים במערך
איך אני ניגש לשנות את האוביקט הספציפי?
אני יכול ע"י $index למצוא את המקום שלו
יש איזה משתנה שמחזיק רפרנס אליו ישירות (למה מפריע לי להשתמש ב$index? לא יודע)? -
יצרתי מערך בקונטרולר
$scope.allObj = [ [ { name: 'myName', lastName: 'aaa' }, { name: 'myName', lastName: 'bbb' }, { name: 'myName', lastName: 'ccc' } ], [ { name: 'myName', lastName: 'ddd' }, { name: 'myName', lastName: 'eee' }, { name: 'myName', lastName: 'fff' } ] ]; מזה יצרתי אלמנטים
<div ng-controller="myCtrl"> <div ng-repeat="section in allObj"> <button ng-repeat="fullNmae in section" ng-click="changeName( $parent.$index, $index )"</button> </div> </div> וזו הפונקציה:
$scope.changeName = function(idx1, idx2) { $scope.allObj[idx1][idx2].myName = 'aharon'; }; השאלה היא על הקטע הזה:
scope.allObj[idx1][idx2]
זו הדרך הנכונה?
זו הדרך היחידה או שיש משהו כמו this.name? -
@אהרן אמר בng-repeat איך ניגשים לאיבר הספציפי?:
$scope.changeName = function(idx1, idx2) {
$scope.allObj[idx1][idx2].myName = 'aharon';
};אתה ודאי יכול להעביר מצביע לאיבר עצמו או לאביו. וודאי שתחושתך שלא אמורים לעבוד עם האינדקס נכונה.
אתה משתמש בשם של האיטרטור: x in collection, בכל הסקופ של הלופ הx מייצג את האיבר הנוכחי.<div ng-repeat="section in allObj"> <button ng-repeat="fullName in section" ng-click="changeName(fullName,section)">{{fullName.name}} </button> </div> בדוגמה פה העברתי לפונקציה הן את האיבר הפנימי והן את אביו, אף שבפונקציה שלך לכאורה אין שימוש באב.
הנה הפונקציה לפי השינוי:$scope.changeName = function(element, parent) { element.name = 'aharon'; }; דוגמה חיה:
https://plnkr.co/edit/OGoISxso0SNKbuIjdKJX?p=preview
1/5