之間的關係是什麼?我不是問兩者之間有什麼區別,我想知道它們在組件的指令和控制器中是如何協同工作的。Angular 1.X控制器和指令
0
A
回答
2
我不確定爲什麼你對此表決不滿意,因爲我認爲這是一個與角度1.x的不太清晰的方面有關的問題。
暴露指令的API
其中一個主要的原因,以建立與控制器的指令是揭露一個指令的API其他指令。一個很好的例子是ngModel
和ngModelController
。許多自定義指令都需要訪問ngModel
,這些指令也在聲明自定義指令的地方或上方聲明。
{ require:'^ngModel' }
這實際上是說這個定製指令需要訪問的ngModelController
可用API做額外的工作:你可以通過該指令定義看到這一點。例如,你想要一個指令在特定的ngModel上做一些自定義的分析或格式化。在我的應用程序中,我不斷收到從服務器返回的日期字符串的錯誤。我創建這個自定義指令來處理錯誤和正確格式化字符串(這是BTW的CoffeeScript):
.directive 'dateString', [
()->
{
priority: 10
require: 'ngModel'
link: ($scope, elem, attrs, ngModel)->
ngModel.$formatters.push (val)-> new Date(val)
}
]
如果沒有ngModelController
,我不會有機會獲得API來添加一個新的格式化功能。
因此,總而言之,我們可能會創建指令控制器來爲可能在同一UI元素上操作的其他指令提供API。
經典控制器角色
爲了折角的精神和意圖內,使用控制器暴露的API,模板比試圖用一個jQuery實現更好的。換句話說,最好這樣做:
指令w。控制器
controller: function($scope){
$scope.doSomething = function(){ ... }
},
template: '<div><button ng-click="doSomething()">Click Me</button></div>'
VS像這樣
指令W上。 jquery-like的實現
link: function($scope, elem, attrs){
elem('button').bind('click', function(){ ... })
},
template: '<div><button>Click Me</button></div>'
相關問題
- 1. Angular指令和控制器
- 2. Angular 1.x指令範圍
- 3. Angular JS指令特定的控制器和父控制器
- 4. Angular 1.x指令共享作用域與控制器的父親
- 5. 在Angular 1.x中,如何從自定義指令訪問控制器方法?
- 6. Angular 1.x指令與模板
- 7. Angular,browserify,指令控制器不可用
- 8. Angular 1.5 + TypeScript指令與控制器
- 9. Angular指令 - 需要從指令控制器訪問所需的控制器
- 10. JavaScript Angular 1.5.x控制器
- 11. Angular指令 - 未找到控制器指令
- 12. AngularJS控制器 - 指令 - >從指令
- 13. 溝通指令/控制器和範圍
- 14. Angular:通過控制器和指令通信
- 15. angular $ firebaseArrray:控制器和指令之間的區別
- 16. Angular中的指令和控制器之間的變量交換
- 17. 用jasmine和bindToController綁定angular指令屬性到控制器true
- 18. MVC Spring AngularJS指令和控制器
- 19. 注入控制器指令
- 20. md-autocomplete Angular 1.x - 從父控制器綁定數據
- 21. 角度控制器和指令從控制器獲取值到指令
- 22. Angular指令>動態控制器名稱>插值控制器名稱
- 23. Angular - 在子指令的控制器中獲取父指令的控制器(不是鏈接功能)
- 24. 嵌套控制器和指令
- 25. 角度重用指令和控制器
- 26. AngularJS:指令和外部控制器
- 27. 指令和控制器通信
- 28. 指令控制器和正常控制器之間的區別
- 29. Angular指令加載指令:在控制器中使用未知提供程序
- 30. Angularjs控制器指令
這是不明確你的意思。組件*是*指令。 – estus