-1
使用控制器和controllerAs時,如果指令直接使用控制器,爲什麼呼籲通過它的別名,沒有做任何事情指的控制器,控制器上的方法?混亂的情況下,在一個指令
假設我們有如下一段代碼:
var app = angular.module('App', []);
app.controller('MyController', ['$scope', function($scope) {
$scope.doAction = function() {
alert("controller action");
}
this.doAction2 = function() {
alert("controller action 2");
}
}]);
app.directive('myDirective', [function() {
return {
restrict: 'E',
scope: {},
controller: 'MyController',
controllerAs: 'myCtrl',
bindToController: true,
template: "<a href='#' ng-click='myCtrl.doAction()'>Click it!<a><br><a href='#' ng-click='myCtrl.doAction2()'>Click it #2!<a> " ,
link: function($scope, element, attrs, controller) {
console.log($scope);
}
}
}]);
雖然第一個鏈接將無法正常工作,第二個會。爲了使第一個工作,我不得不放棄別名,而不是通過ng-click='myCtrl.doAction()'
調用該動作,將其稱爲:ng-click='doAction()'
它不應該使用別名嗎?我的意思是,你更容易找到和重用控制器,其中開發人員連接動作到$scope
對象,而不是this
這是從你的最後一句話,似乎你已經完全理解和'$ scope'(注射控制器和利用模板尋找一個變量訪問)this'(控制器對象)之間'的區別。如果你的問題是「爲什麼它是這樣設計的?」,那麼這裏就不是題目。如果沒有,請澄清。 – Blackhole