2016-09-23 5 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.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); 
     } 
    }; 

После этого, при нажатии на подать, я передаю $ scope.selection который будет содержать объекты моей деятельности.

Для редактирования данных я могу поместить данные в выбор []. Но как проверить флажки, используя это, и после этого пользователя следует снова снять или проверить их. Я пробовал использовать foreach loop, но это не помогло.

Заранее спасибо

ответ

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

Смежные вопросы