2016-09-23 12 views
0

いくつかのテキストボックス、ラジオボタン、およびチェックボックスを含むページを作成しました。私はこのページを使って新しいデータを保存したり、既存のデータを編集したりしています。私は新しいデータを保存することができますが、データを編集するために、ページは変数から取得しているいくつかの事前定義された値を表示する必要があります。私はその変数からテキストボックスとラジオボタンの値を取得して設定することができます。しかし、私はチェックボックスをチェックすることができません。たくさんのチェックボックスがあるので、ページに表示される値にng-repeatを使用しています。選択したチェックボックスの値を配列に設定し、その値をサービスレイヤに渡します。AngularJSの配列値からチェックボックスを選択

HTML::

<div id="activityCheckboxList" class="checkboxList"> 
    <div ng-repeat="activity in activities"> 
     <label> 
       <input type="checkbox" ng-true-value="activity" ng-checked="selection.indexOf(activity) > -1" ng-click="toggleSelection(activity)"/> 
       <span>{{activity.activityName}}</span> 
      </label> 
    </div> 
</div> 

app.js:

は、以下の私のコードスニペットですクリックすると、提出している間、私は$ scope.selectionを渡しています、この後

$scope.selection=[]; 
$scope.getActivities(); //this sets values in $scope.activities which is a  list coming from service layer 

    //Get Selected Activities from Check Boxes 
    $scope.toggleSelection = function toggleSelection(activity){ 
     var idx = $scope.selection.indexOf(activity); 

     if(idx > -1){ 
      $scope.selection.splice(idx, 1); 
     } 
     else{ 
      $scope.selection.push(activity); 
     } 
    }; 

ました私の活動オブジェクトが含まれます。

データを編集するには、データを選択[]に入れることができます。しかし、それを使用してチェックボックスをチェックする方法は、そのユーザーのチェックを外したりチェックしたりする必要があります。私はforeachループを使ってみましたが、助けにはなりませんでした。 「アクティビティ」として予め

答えて

0

おかげでindexOfのインデックスを見つけるための正しい方法はありませんが、オブジェクトです。私はあなたのコード

HTMLに

   <input type="checkbox" ng-true-value="activity" 
     ng-checked="checkInSelectionList(activity)" ng-click="toggleSelection(activity)"/> 
       <span>{{activity.activityName}}</span> 

JS

$scope.checkInSelectionList = function (item) { 
for(var i=0; i<$scope.selection.length;i++){ 
    if($scope.selection[i]['ID'] == item['ID']){ 
    return true; 
    } 
} 
} 

ます。また、オブジェクトのインデックスを検索するためにunderscoreを使用することができますが、いくつかの変更を加えました。

https://jsfiddle.net/nors536b/

+0

ありがとうございます!あなたは本当に多くの時間を節約するのに役立った。 :) – blu3

関連する問題