ng-repeat איך ניגשים לאיבר הספציפי?
-
יצרתי מערך בקונטרולר
$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