如何在更新工厂时操纵DOM元素

时间:2014-12-08 22:52:38

标签: angularjs

我正在尝试更新指令:

<video class="me" ng-if="User.CurrentRoom.Users[0].isPlaying" ng-src="{{User.CurrentRoom.Users[0].videoSrc}}" autoplay></video>
<video class="other" ng-if="User.CurrentRoom.Users[1].isPlaying" ng-src="{{User.CurrentRoom.Users[1].videoSrc}}" autoplay></video>

当用户的属性“isPlaying`”变为false时,我想调用视频元素的pauseméthod。

我试着这样看:

function link(scope, element, attrs) {
    scope.$watch(User.CurrentRoom, function(Room) {
        console.log('CATCH THE EVENT');
    })
}

但它没有被解雇。

这是工厂:

angular.module('myapp').factory('User', function() {
  return {
    Rooms: [],
    CurrentRoom: {}
  }
});

你会怎么做?在工厂更改时,在指令内操作DOM元素。

1 个答案:

答案 0 :(得分:0)

要深度观察对象,您的$watch调用应将3d参数设置为true。请记住根据文档:

  

当objectEquality == true时,watchExpression的不等式根据angular.equals函数确定。要保存对象的值以供以后比较,请使用angular.copy函数。因此,这意味着观看复杂的物体会对记忆和性能产生不利影响。

scope.$watch('User.CurrentRoom', function(Room) {
    console.log('CATCH THE EVENT');
}, true);