據我所知,在'Directive Definition Object'上使用控制器屬性時,每次給定指令被鏈接時都會創建該控制器的單獨實例?在控制器中使用指令As
現在正在使用controllerAs模式我可以看到,當每個指令正在編譯時,控制器工廠函數正在觸發給this.data.hello方法不同的結果。
但在我看來,我得到了該控制器的最後一個實例。這是爲什麼?我錯過了什麼?
JS
angular.module('app', [])
.controller('customCtrl', function() {
console.log('controller');
this.data = {
hello: Math.floor(Math.random() * 200 + 1)
};
})
.directive('customDrv', function() {
var linkFn = function (scope, element, attrs, ctrl) {
console.log('link');
console.log(ctrl.data.hello);
};
return {
templateUrl: 'Home/CustomDrv',
restrict: 'E',
controller: 'customCtrl',
controllerAs: 'vm',
compile: function (element, attrs) {
console.log('compile');
return linkFn
}
}
})
的Html
<custom-drv></custom-drv>
<custom-drv></custom-drv>
<custom-drv></custom-drv>
<custom-drv></custom-drv>
Plunker:https://plnkr.co/edit/HII9a7Ff6ryXuz6Fgzr6
或擴大範圍(範圍:真) –
你」再右吧。忘記隔離指令範圍。謝謝 –