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