在ng-repeat

时间:2015-11-14 14:09:58

标签: javascript angularjs ng-repeat

我正在使用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

(对象的属性将随频率更新,因为它是每个对象的“状态(开/关)”。)

2 个答案:

答案 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()获取。