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
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות