我使用自定义指令
<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来监听范围,如果范围得到更新,我需要做一些表演。
那么如何在不使用范围的情况下更新范围值。$ watch
答案 0 :(得分:0)
当主控制器中的“scope.stats”值发生变化时,您可以在指令中广播事件并接收相同的事件,并按照您的需要进行操作。 广播事件的示例代码:
SELECT
flights.name,
flights.Departure
FROM
flights
INNER JOIN Table2
ON CONCAT(Table2.Dep,Table2.Arri) = CONCAT(SUBSTRING(flights.Departure,1,4),SUBSTRING(flights.Arrival,1,4));
在指令中收到一个事件:
$scope.$broadcast('yourEventName');
答案 1 :(得分:0)
尝试怎么样:
<users stats="stats" ng-change="onUserStatChange($event)"></users>
or
<users stats="stats" ng-blur="onUserStatChange($event)"></users>
然后在控制器中:
$scope.onUserStatChange = function(event) {
//event.whatever
}