2013-12-17 58 views
1

我有這樣的指令:角JS缺少所需的控制器錯誤:控制器「ngModel」,通過指令要求無法找到

directive('myDirective', 
    function() { 
     return { 
      restrict: 'EA', 
      scope: { 
       params: '=ngModel' 
      }, 
      //template: '', 
      templateUrl: '/myTemplate.html', 
      controller: 'myController', 
      link: function(scope, iElement, iAttrs, ngModel) { 
       // code.. 
      } 
     }; 
    } 
); 

然而,當我使用這個指令,我得到以下錯誤控制檯: $ compile:ctreq,超鏈接到以下消息: 缺少必需的控制器 組件錯誤$ compile 無法找到指令'myDirective'所需的控制器'ngModel'!

如果我使用「模板」而不是「templateUrl」,錯誤消失,我不想使用「模板」。 這似乎是一個已知的問題:https://github.com/angular/angular.js/issues/4603

任何人都可以請提出一個解決辦法? 編輯:我使用ngModel,因爲我想要雙向綁定

回答

0

如果你想傳遞一個參數到一個指令,你可以這樣做 - 你對我的問題看起來不太合適。

<div my-directive my-param="foo"></div> 


directive('myDirective', 
    function() { 
     return { 
      restrict: 'EA', 
      scope: { 
       myParam: '=' 
      }, 
      //template: '', 
      templateUrl: '/myTemplate.html', 
      controller: 'myController', 
      link: function(scope, iElement, iAttrs, ngModel) { 
       scope.myParam... 
      } 
     }; 
    } 

);

+0

對不起,我應該提到,我想實現雙向綁定,因此我使用ngModel – user90766

+0

我認爲這就是「=」應該這樣做,如果你有一個變量foo在你的父範圍內,如果應該更新如果更新了鏈接功能 – DavidC

+1

DavidC,感謝您的澄清。我在對指令中的雙向綁定理解錯誤。我已經創建了一個jsfiddle來說明這一點,以防其他人有相同的問題:http://jsfiddle.net/A8362/2/ – user90766

相關問題