Привязка уникального значения из таблицы к 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");
   };

};

С этого момента вы должны иметь возможность делать все, что вы хотите с ним. Если у вас есть более конкретные вопросы, стреляйте!

Другие вопросы по тегам