我讀通過這篇文章:可以通過指令中的鏈接函數完全替換控制器嗎?
http://teropa.info/blog/2014/10/24/how-ive-improved-my-angular-apps-by-banning-ng-controller.html
文獻提出,控制器,以消除需要被整合到這樣的指令用不完NG控制器:
angular.module('contestantEditor', [])
.directive('cContestantEditorForm', function() {
return {
scope: {
contestants: '='
},
templateUrl: 'contestant_editor.html',
replace: true,
controller: 'ContestantEditorFormCtrl',
controllerAs: 'ctrl',
bindToController: true
};
})
.controller('ContestantEditorFormCtrl', function($scope) {
this.contestant = {};
this.save = function() {
this.contestants.push(this.contestant);
this.contestant = {};
};
});
在但是,有人提出這個解決方案:
angular.module('contestantEditor', [])
.directive('cContestantEditorForm', function() {
return {
scope: {
contestants: '='
},
templateUrl: 'contestant_editor.html',
replace: true,
link: function (scope) {
scope.contestant = {};
scope.save = function() {
scope.contestants.push(scope.contestant);
scope.contestant = {};
};
}
};
});
它達到t他與控制器的版本完全一樣,不需要製作控制器。所以我很好奇兩種方法的優點和缺點,而不是用傳統的ng控制器來書寫角度,以及控制器到底是否是必要的。
關於「控制器不能被指令取代」,你讀過這篇文章嗎?他們沒有擺脫控制器,而是將其整合到他們的指令中。它的工作原理幾乎與正常情況完全一樣,但是通過「bindToController」屬性消除了對ng-controller的需求,甚至沒有範圍。你能否修改你的答案,以便更具體地將控制器集成到指令中? – m0meni
不,但我會,是的第二部分關於那 –