[英]How to push objects into arrays in angularjs?
我正在使用Ionic Framework和angularjs開發一個應用程序。 在這里,我正在ng-repeat內使用復選框。 使用此方法,我可以將復選框選中的值插入數組。 但是它像字符串一樣插入。
像[“ coding”,“ testing”]一樣。
但我希望它像物體一樣。
像[“ object”,“ object”]一樣。 在該對象值內部應該存在。
HTML代碼是
<div class="action-checkbox" ng-repeat="task in projecttasks">
<h3>{{task.projectName}}</h3>
<ul>
<li ng-repeat="subtask in task.subTasks" ng-click="addprjtaskList(task,subtask)">
<input id="{{subtask._id}}" name="{{subtask._id}}" type="checkbox" value="{{subtask.subTaskName}}" ng-checked="selection.indexOf(subtask.subTaskName) > -1" ng-click="toggleSelection(subtask.subTaskName)" class="hide"/>
<label for="{{subtask._id}}" >
{{subtask.subTaskName}}
</label>
</li>
</ul>
</div>
控制器代碼是
$scope.selection = [];
// toggle selection for a given fruit by name
$scope.toggleSelection = function toggleSelection(fruitName) {
var idx = $scope.selection.indexOf(fruitName);
// is currently selected
if (idx > -1) {
$scope.selection.splice(idx, 1);
console.log($scope.selection);
}
// is newly selected
else {
$scope.selection.push(fruitName);
console.log($scope.selection);
}
};
誰能幫助我做到這一點。
在toggleSelection(fruitName)
您正在傳遞字符串
然后你在做
$scope.selection.push(fruitName)
它正在按照所告知的去做!
您需要將對象傳遞給函數...
ng-click="toggleSelection(subtask.subTaskName)"
應該 ...
ng-click="toggleSelection(subtask)"
接着 ...
推那個代替!
我認為您正在尋找的是將subtask
推入數組,而不是subtask.subTaskName
。
您必須將視圖更改為ng-click="toggleSelection(subtask)"
才能引用對象而不是對象的名稱。
您還必須修改ng-checked="selection.indexOf(subtask.subTaskName) > -1
來引用一個檢查重復性的新函數(因為indexOf()
不喜歡對象數組)。進入下一個。
接下來,您必須更新控制器以測試重復項。 我建議使用for循環制作一個單獨的方法來遍歷數組,檢查subTaskName
是否相等,而不是indexOf()
。 通過使用單獨的方法,可以從html中刪除邏輯,並允許代碼重用。 雙贏!
然后,您只需要正常推動對象就可以了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.