我正在使用ng-repeat来表示我的对象。例如:
<div ng-repeat="item in items | orderBy: 'label' | filter:query | orderBy: 'label'">
<h1>{{item.label}}</h1>
<h1>{{item.property}}</h1>
</div>
我也在使用socket.io。因此,当更新其中一个对象的属性时,我的后端将使用此对象发送socket.io事件,我将在AngularJS Ctrl中捕获它。
socket.on('itemPropertyUpdated', function(item){
// Update property of this item in ng-repeat
});
我的问题是:
我如何更新ng-repeat中表示的对象之一的属性?
我的意思是,如何在不重新加载所有<h1>{{item.property}}</h1>
数组的情况下更新items
。
(对象的属性将随频率更新,因为它是每个对象的“状态(开/关)”。)
答案 0 :(得分:1)
AngularJS之外的事件需要申请$。这告诉angular应用摘要周期来更新视图。
socket.on('itemPropertyUpdated', function(item){
$scope.$apply(function() {
// Update property of this item in ng-repeat
});
});
答案 1 :(得分:0)
如果您有对范围的引用:
socket.on('itemPropertyUpdated', function(item){
// Update property of this item in ng-repeat
someObject.someProperty = someValue;
scope.$evalAsync();
});
如果不这样做,可以致电angular.element(someDomElement).scope()
获取。