在 angular JS 中检测模型特定元素的变化

Detect a change to a paticular element of a model in angular JS

我想要它,这样如果用户编辑会员编号或角色然后推送保存特定行得到 post 请求到我的 API,

http://plnkr.co/edit/plM45Ulwl2zKLFdPsKPl?p=preview

<tr ng-repeat="user in users" id="{{ user.userId}}">
    ..
    <td>{{ user.name}}</td>
    <td>{{ user.email}}</td>
    <td ng-click="editMemNo = !editMemNo" ng-show="editMemNo">
       {{ user.role}}  
    </td>
    ..
   <button> Save</button>
 ..
</tr>

angular.module("userList", []).controller("usersCtrl", function($scope) {

  var original = [{
    "userId": "1",
    "memNo": "1",
    "name": "asdf",
    "username": "max",
    "email": "max@gmail.com",
    "role": "10",
    "mobile": "079951334"
  },

  ..

  }];

  $scope.users = angular.copy(original);
  $scope.original = angular.copy(original);

  $scope.editMemNo = false;

  $scope.editMemNo = function() {
    $scope.editMemNo = true;
  };

  $scope.roles = ["1", "2", "9", "10"];

基本上我想添加一个 ng-click 到按钮,这样当我点击它时它会 post 只有那一行,在它被改变的情况下(即脏状态)到数据库).所以我可以添加一个函数,比如

$scope.submitRow = function( the row I want  ){

     $http.post bla bla

};

在按钮中我会

 <button ng-click="sumbitRow(What do I put here?)"

所以我想基本上我的问题是我应该在 ng-click 的 submitRow 参数中添加什么?或者是实现我想要实现的目标的最佳方式?

您可以使用 $scope.$watch,它允许您观察对象的一个​​特定 属性 并将回调绑定到该事件。

http://fdietz.github.io/recipes-with-angular-js/controllers/responding-to-scope-changes.html

编辑:我又看了一遍问题。目前还不清楚您要的是什么,但要了解对象的差异,请尝试以下操作: https://github.com/flitbit/diff

我有点做到了,我现在觉得自己很傻

对于按钮...

    <button class="btn btn-success" ng-click="pushRow($index)">

对于代码...

$scope.pushRow = function($index){

    alert( "Lets say that we have posted this to the database " + JSON.stringify( $scope.users[$index] ));

};