AngularJS - 更新自定义指令中的变量
AngularJS - Updating a variable in custom directive
我已经在我的一个控制器的父范围内声明了一个变量。
$scope.myValue = true;
这个值很容易在自定义指令中获取。但是当值在父控制器中更新时,它不会反映在自定义指令中。
我的问题是我们如何让指令知道 "myValue" 已更改?
如果信息不够,请告诉我。
在您的父控制器中,更改变量的值后,您可以像这样广播一个事件 -
$scope.$broadcast('valueChanged', {
val: $scope.myValue // pass in any object you want
});
然后在你的子控制器中,处理它 -
$scope.$on('valueChanged', function (event, data) {
console.log(data); // get the same object here
});
$broadcast
触发事件,所以这应该适用于您的情况。
你可以观察指令里面的值,像这样:
app.directive('directive', function() {
return {
scope: true,
link: function($scope){
$scope.$watch('$parent.myValue', function(newVal){
console.log(newVal);
});
}
};
});
Link 演示:https://jsfiddle.net/mzrja04L/
我已经在我的一个控制器的父范围内声明了一个变量。
$scope.myValue = true;
这个值很容易在自定义指令中获取。但是当值在父控制器中更新时,它不会反映在自定义指令中。
我的问题是我们如何让指令知道 "myValue" 已更改?
如果信息不够,请告诉我。
在您的父控制器中,更改变量的值后,您可以像这样广播一个事件 -
$scope.$broadcast('valueChanged', {
val: $scope.myValue // pass in any object you want
});
然后在你的子控制器中,处理它 -
$scope.$on('valueChanged', function (event, data) {
console.log(data); // get the same object here
});
$broadcast
触发事件,所以这应该适用于您的情况。
你可以观察指令里面的值,像这样:
app.directive('directive', function() {
return {
scope: true,
link: function($scope){
$scope.$watch('$parent.myValue', function(newVal){
console.log(newVal);
});
}
};
});
Link 演示:https://jsfiddle.net/mzrja04L/