我有一组帐户,例如[{username: xxx, password: xxx} , ....]
,然后我将它们打印到下面的页面,
<tr ng-repeat = 'account in accounts'>
<td>{{account.username}}<td>
<td>{{account.password}}<td>
<td><button ng-click='ResetPassword(account)'>Reset</button></td>
</tr>
ResetPassword()
func,
$scope.ResetPassword = function(account){
$http.post('/reset/password/'+account.username).success(function(rAccount){
account = rAccount; //account & rAccount have the same structure.
}
});
};
问题如果我覆盖account=rAccount
,密码用户界面从未更新过,除非我像account.password = rAccount.password
一样手动设置属性,请参阅此JSFIDDLE < / p>
那么,为什么它不能通过obj overriding工作?那怎么解决呢?我的account
比这个例子复杂得多,我觉得逐个更新并不是一个好习惯,谢谢。
答案 0 :(得分:1)
答案 1 :(得分:0)
它不起作用的原因主要是因为,angularjs将一个$$ hashKey属性添加到与ng-repeat一起使用的集合中的对象。
$$ hashkey是一个自动生成的键,其角度分配给数组,在ng-repeat指令中传递的集合。 Angular使用它来跟踪对数组所做的任何更改并相应地更新dom。
所以在你的案例中,帐户和rAccount没有相同的结构。这就是为什么它适用于 angular.extend ,因为@ anik-islam-abhi建议。您也可以使用
angular.copy(源,[目的地]);
像
angular.copy(rAccount,account);
答案 2 :(得分:0)
account = rAccount
不起作用。您必须更新$scope.accounts
值