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/