Привязка уникального значения из таблицы к ng-модели флажка
У меня есть таблица (которая заполняется данными, полученными от сервера с помощью ng-repeat.) В каждой строке есть флажок, и если флажок установлен (несколько), я хочу отправить запрос на сервер удалить строки. Для этого я хочу привязать свой флажок к уникальному полю в моей таблице, но не могу получить правильный синтаксис. Я попробовал ниже варианты, которые я прочитал в SO, но ничего не похоже на работу.
<input type="checkbox" ng-model="demo.Custid" >//this replaced the value in the table with true or false.
<input type="checkbox" ng-model="formData.checkboxes[demo.Custid]" >//this gave me values in the below format {"12500":true,"125001":false}
В любом случае я могу получить значение идентификатора клиента (в данном случае), напрямую связанного с ng-моделью? Я хочу получить эти значения и отправить запрос на сервер, чтобы удалить данные из таблицы для соответствующего клиента,
.controller('Controller1',function($scope,$rootScope,$routeParams){
$scope.name = 'Controller1';
$scope.params = $routeParams;
$scope.formData = {
checkboxes: {}
};
$scope.demos = [
{ 'Account':'abc.com',
'Custid': 125000,
},
{'Account':'abc.com',
'Custid': 125001, },
{ 'Account':'abc.com',
'Custid': 125002,}
]
})
Я новичок в угловой JS, и любая помощь / указатели были бы действительно полезны.
1 ответ
Используйте нг-клик.
У вас уже есть ng-repeat, повторяющий демо. Видя $ scope.demos и demo.Custid, я полагаю, вы только что сделали
ng-repeat="demo in demos".
Теперь просто передайте этот demo.Custid функции, определенной в области видимости, используя ng-click="myfunction(demo.Custid)"
Я немного адаптировал ваш код, чтобы облегчить его для себя, но это должно быть довольно очевидно:
Изменить: я только что понял, что я использовал угловой шаблон 1.01 в jsfiddle для создания этого кода, я оставлю его, но вот скрипка для рабочего примера в angularjs 1.5.5
index.html
<div ng-controller="Controller1">
<input type="submit" ng-click="sendToBackend()">
{{name}}
<table>
<thead><tr><td>Select</td><td>Customer</td></tr>
</thead>
<tbody>
<tr ng-repeat="demo in demos">
<td><input type="checkbox" ng-click="addToList(demo.Custid)"></td>
<td>{{demo.Custid}}</td>
</tr>
</tbody>
</table>
<ul>
<li ng-repeat="check in checkboxes">{{check}}</li>
</ul>
</div>
myapp.js
var myApp = angular.module('myApp', []);
function Controller1($scope) {
$scope.name = 'Controller1';
$scope.checkboxes = [];
$scope.demos = [{Account: 'abc.com',Custid: 125000,},
{Account: 'abc.com',Custid: 125001,},
{Account: 'abc.com',Custid: 125002,}];
$scope.addToList = function(id) {
$scope.checkboxes.push(id);
};
$scope.sendToBackend = function() {
alert("sending " + $scope.checkboxes.length + " items to backend");
};
};
С этого момента вы должны иметь возможность делать все, что вы хотите с ним. Если у вас есть более конкретные вопросы, стреляйте!