簡體   English   中英

如何在angularjs中將對象推送到數組中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM