【发布时间】:2013-01-10 20:11:21
【问题描述】:
Angular 的 $watch 函数允许在指定属性更改时触发事件,如下所示。当范围发生任何变化时,是否有类似的方法来监听事件?
// works
$scope.$watch("someval", function() { }, true);
$scope.$watch(function(scope){ return scope.someval; }, function() { }, true);
// doesn't work
$scope.$watch("this", function() { }, true);
$scope.$watch(function(scope){ return scope; }, function() { }, true);
【问题讨论】:
-
我建议将所有可以更改的属性放入某个对象中,并使其成为 $scope 的可观察属性。这不是一个解决方案,但它可以工作并且可能会使您的范围更具结构化/可维护性(您可以将该对象传递给另一个函数,而不是整个范围,甚至可能导致内存泄漏。
-
@ValentynShybanov:这是一个好方法,但我必须为每个绑定值添加前缀(“container.someval”等)。是否有一种简单的方法可以从标记中创建子范围? (见相关问题:stackoverflow.com/questions/14546039/…)
标签: javascript angularjs