【发布时间】:2026-01-23 16:55:15
【问题描述】:
我有使用自定义指令
<users stats="stats"></users>
当我们从主控制器更改范围对象时,我也更新了指令范围值
app.directive('users', function(){
var directive = {};
directive.restrict = "E";
directive.templateUrl = "templates/partials/users_stats.html";
directive.scope = {stats:'='};
directive.controller = "userStatsCtrl"
return directive;
});
所以,在指令控制器内部,我正在做一些功能。喜欢
app.controller("userStatsCtrl", function($scope){
$scope.$watch('stats', function(newValue) {
if (angular.isDefined(newValue)) {
.....
}
});
})
所以在这里,我使用 $watch 来监听范围,如果是更新,我会执行一些操作。
我的问题是,我不想使用 watch 来监听范围,如果范围得到更新,我需要执行一些操作。
那么如何在不使用 scope.$watch 的情况下更新作用域值
【问题讨论】:
-
你为什么不用
$watch? -
它将影响整个范围对象。但是,这里的特定对象只会改变。性能标准。
-
最好使用 $watch,除非你有很多,否则不会有任何性能问题。此外,如果您想在对象中查看更精确的内容,请使用 $scope.$watch{function(){ return stats.a}, function(newValue){[process...]});
标签: javascript angularjs