AngularJS - 更新自定义指令中的变量

时间:2015-03-31 10:51:59

标签: angularjs angularjs-directive angularjs-scope

我在我的一个控制器中声明了父范围内的变量。

  

$ scope.myValue = true;

该值很容易在custom指令中获取。但是当在父控制器中更新值时,它不会反映在自定义指令中。

我的问题是我们怎样才能让指令知道" myValue"改变了吗?

如果信息不充分,请告诉我。

2 个答案:

答案 0 :(得分:1)

在父控制器中,在更改变量值后,您可以广播此类事件 -

$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会触发事件,因此这适用于您的情况。

答案 1 :(得分:1)

您可以在指令中查看值,如下所示:

app.directive('directive', function() {
    return {
        scope: true,
        link: function($scope){
            $scope.$watch('$parent.myValue', function(newVal){
                console.log(newVal);
            });
        }
    };
});

链接演示:https://jsfiddle.net/mzrja04L/