我正在嘗試從angular-ui代碼中學習。我看到btnRadio
指令需要它自己。我明白指令可能require
控制器,然後作爲link
函數的第四個參數中的數組訪問它們。我不明白爲什麼一個指令會要求自己。在AngularJS中,爲什麼指令需要自己?
.directive('btnRadio', function() {
return {
require: ['btnRadio', 'ngModel'],
controller: 'ButtonsController',
link: function (scope, element, attrs, ctrls) {
var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];
...
https://github.com/angular-ui/bootstrap/blob/master/src/buttons/buttons.js#L15
這僅僅是要求其自己的控制器,對不對?這是什麼目的,或者它解決了什麼問題?
我也看到了,但是難道你不能從指令中直接控制控制器嗎? '.directive('btnRadio',function(ButtonsController){});' – SimplGy
@SimpleAsCouldBe你試過嗎?我不認爲它可能.. http://jsfiddle.net/E6EfQ/ – javaCity
糟糕,你是對的。當我需要類似的東西時,我必須將共享方法提取到服務中,並在控制器和指令之間共享服務。也許這是相關的。 – SimplGy