如何使绑定适用于对象属性。例如,在我的控制器中,我有:
$scope.reviews = {
rating_summary: 4,
items: [ { title: 'A Title'}, etc... ]
}
在我看来:
<li ng-repeat="review in reviews.items">
现在,每当我更改控制器中的评论变量时,都不会更新任何内容:
$scope.reviews = [new updated reviews]
可能因为angular正在侦听$ scope.reviews旧引用的更改。
绑定工作有两种解决方案,但两者都不是很聪明:
$scope.items = $scope.reviews.items
,现在只要项目发生更改,它们就会更新。angular.copy({items: []}, $scope.reviews);
除了上述内容之外,还有其他任何解决方案可以实现此目的。
答案 0 :(得分:1)
在更新对象/项目时必须有一些错误 请参阅此Plunker
$scope.reviews = {
rating_summary: 4,
items: [ { title: 'A Title'}, { title: 'B Title'} ]
};
$scope.changeItems = function(){
$scope.reviews.items = [ { title: 'A Title'}, { title: 'B Title'},
{ title: 'C Title'}];
};
$scope.changeObject = function(){
$scope.reviews = {
rating_summary: 4,
items: [ { title: 'A Title'}, { title: 'B Title'}, { title: 'D Title'} ]
};