我有一个控制器获取用户列表和列出它们的视图,以及用于显示和设置它们是否处于活动状态的复选框......
.controller('StaffCtrl', ['StaffService', function(StaffService) {
var self = this;
self.staff = StaffService.query();
self.activeUpdate = function(person){
StaffService.update({id:person.id}, person);
};
}]);
<tr ng-repeat="person in staffCtrl.staff">
<td>{{ person.name_full }} </td>
<td><input type="checkbox" ng-checked="person.active" ng-model="person.active" ng-change="staffCtrl.activeUpdate(person)" ng-true-value="1" ng-false-value="0"></td>
</tr>
单击复选框一旦触发activeUpdate,就会进行异步调用并更新用户,但在视图中复选标记本身不会从复选框中消失(在最新的 Chrome 和 Firefox 中)。如果我现在再次单击它,复选标记就会消失并且activeUpdate不会被调用。如果我再次单击支票再次出现并同时进行所有呼叫,总是仅在添加支票时,删除它始终需要 2 次点击!
我究竟做错了什么?
更新:员工列表的示例 JSON(使用 curl 查询 REST api...)
[
{
"active": 1,
"id": 1,
"name_first": "Ed",
"name_full": "Tech, Ed",
"name_last": "Tech",
"name_middle": null,
"uri": "/sips/api/staff/1",
"username": "admin"
},
{
"active": 1,
"id": 252,
"name_first": "test",
"name_full": "aatest, test",
"name_last": "aatest",
"name_middle": "something",
"uri": "/sips/api/staff/252",
"username": "testteacher"
},
...
]