我正在尝试更新指令:
<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时,我想调用视频元素的pause
mé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元素。
答案 0 :(得分:0)
要深度观察对象,您的$watch
调用应将3d参数设置为true。请记住根据文档:
当objectEquality == true时,watchExpression的不等式根据angular.equals函数确定。要保存对象的值以供以后比较,请使用angular.copy函数。因此,这意味着观看复杂的物体会对记忆和性能产生不利影响。
scope.$watch('User.CurrentRoom', function(Room) {
console.log('CATCH THE EVENT');
}, true);