AngularJS指令是否可以在动态控制器中观看vars

时间:2018-11-06 16:42:17

标签: angularjs angularjs-directive

我有一个在不同控制器中使用的服务,我想将它们合并为可应用于不同页面的指令。首先,我只是想尝试一个简单的示例。假设我有两个控制器,它们都有一个共同的功能:

angular.module('myApp')
.controller('CtrlOne', function() {
    $scope.watchVar = 0;
    $scope.changeVar = function() {
        $scope.watchVar = 1;
    }
});

angular.module('myApp')
.controller('CtrlTwo', function() {
    $scope.watchVar = a;
    $scope.changeVar = function() {
        $scope.watchVar = b;
    }
});

然后,在指令中,我试图在运行时确定控制器,以便无论页面具有哪个控制器都可以监视此变量(只要它使用'watchVar'变量即可):

angular.module('myApp').directive('myDirective', function () {
    return {
        scope: {
            ctrl: '@myDirective',
            watchVar: '=',
        },
        controller: ctrl,
        link: function(scope, element, attrs) {
            scope.$watch('watchVar', function(newValue, oldValue) {
                if (newValue) {
                    console.log("watchVar changed to: "+newValue);
                } else {
                    console.log("watchVar remained: "+oldValue);
                }
            }, true);
        }
    };
});

HTML是这样的:

<div p2a-filter-cache='CtrlOne'>

这有可能吗?

0 个答案:

没有答案