2016-02-24 2 views
0

Я пытаюсь получить многократное значение флажка и значения атрибута.angularjs + получить многократное значение флажка и значения атрибута

Каждый флажок имеет несколько значений атрибута (data-id, data-ot, data-si).

Как получить установленный флажок с тремя значениями атрибутов.

<table> 
    <thead class="search"> 
     <tr> 
      <th> 
      <input type="checkbox" class="selectall " ng-model="selectall" ng-click="select(data)"> 
      </th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr > 
      <td> 
      <input data-id="287" data-ot="31" data-si="541" type="checkbox" - ng-model="rowselect"> 
      </td> 
     </tr> 
     <tr > 
      <td> 
      <input data-id="295" data-ot="331" data-si="31" type="checkbox" ng-model="rowselect"> 
      </td> 

     </tr> 
     <tr > 
      <td> 
      <input data-id="297" data-ot="321" data-si="31" type="checkbox" ng-model="rowselect"> 
      </td> 
     </tr> 
     <tr > 
      <td> 
      <input data-id="296" data-ot="451" data-si="671" type="checkbox" ng-model="rowselect"> 
      </td> 
     </tr> 
     <tr > 
      <td> 
      <input data-id="293" data-ot="91" data-si="651" type="checkbox" ng-model="rowselect"> 
      </td> 
     </tr> 
     <tr > 
      <td> 
      <input data-id="294" data-ot="13" data-si="14" type="checkbox" ng-model="rowselect"> 
      </td> 
     </tr> 
    </tbody> 
</table> 

<input type="button" name="Submit" value="Submit" ng-click="ShowSelected()" /> 

Ожидаемый результат:

Например 2 флажками выбранные средства:

[{"id":"xx","ot":"xx","si"},{"id":"xx","ot":"xx","si"},] 

Код:

app.controller('MyCtrl', function($scope) { 
    $scope.ShowSelected = function() { 
    /// 
    }; 
}); 

ответ

0

Я не вижу смысла в сохранении данных внутри такие атрибуты, если это не то, что вам особенно нужно по какой-то определенной причине.

Самый простой способ сделать это, чтобы сделать массив объектов на Вашей области, как это:

$scope.data = [ 
    {id: 123, ot: 234, si: 567, checked: false}, 
    {id: 321, ot: 243, si: 789, checked: false}, 
    {id: 345, ot: 678, si: 567, checked: false} 
]; 

Затем вы можете использовать нг-повтора, чтобы создать таблицу и связать флажков с .checked собственности:

<table> 
    <thead> 
    <!-- your table header --> 
    </thead> 
    <tbody> 
    <tr ng-repeat="element in data"> 
     <td> 
     <input type="checkbox" ng-model="element.checked"> 
     </td> 
    </tr> 
    </tbody> 
</table> 

А затем написать showSelected() функцию:

$scope.showSelected = function(){ 
    var tempArray = []; 
    for(var i=0; i<data.length; i++){ 
    if(data[i].checked) tempArray.push(data[i]); 
    } 
    return tempArray; //or maybe console.log(tempArray) or encode to JSON etc. 
} 
0

Добавить атрибут «проверил» к модели CheckBox

$scope.checkboxList = {[ 
    { 
     "id": "xx", 
     "ot": "xx", 
     "checked": false 
    }, 
    { 
     "id": "xx", 
     "ot": "xx", 
     "checked": false 
    } 
]} 


Использование ng-model в вашем HTML, чтобы привязать к зарегистрированному атрибуту

<tr ng-repeat="checkbox in checkboxList "> 
    <td><input type="checkbox" ng-model="checkbox.selected"></td> 
    <td>{{checkbox.ot}}</td> 
</tr> 


И в вашем контроллере вы можете использовать $filter для фильтрации флажки

app.controller('MyCtrl', function($scope, $filter) { 
    $scope.ShowSelected = $filter('filter')($scope.checkboxList , { $: true }); 
}); 
Смежные вопросы