我有一些控制器與一些公用代碼,具體來說$scope.$watch
是幾個控制器相同。我怎樣才能把這個代碼放在一個單獨的文件中,並在需要這個$watch
的各種控制器中導入公共代碼?AngularJS控制器:將公共代碼移動到單獨的文件
8
A
回答
7
您可以通過傳遞您的控制器的範圍內使用服務:
angular.module('app').service("CommonFunctions", ['SomeService', function(SomeService) {
var commonFunctions = {};
commonFunctions.init = function(scope){
scope.$watch(function(){},function(){})
};
return commonFunctions;
}]);
angular.module('app').controller('Ctrl1',
['$scope','CommonFunctions',function($scope,CommonFunctions) {
CommonFunctions.init($scope);
}]);
angular.module('app').controller('Ctrl2',
['$scope','CommonFunctions',function($scope,CommonFunctions) {
CommonFunctions.init($scope);
}]);
這種方式,你正在使用的個人控制的範圍,但使用服務中的常用方法。如果您想從實際添加到控制器作用域的服務獲得常用功能,則還可以在控制器內使用angular.extend($scope, AService)
。
這裏的工作小提琴:http://jsfiddle.net/rhcjdb7L/
肯定這是非常冷靜和所有,但你確定你不想使用$rootscope.$broadcast()
?這是寫得很好:http://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/
相關問題
- 1. AngularJS - 將對象從控制器1移動到控制器2
- 2. 獨立的公共部分爲公共控制器
- 3. 將公共代碼移動到子項目中{block}構建
- 4. 是否可以將Ruby代碼從控制器移動到'.js.rjs'文件中?
- 5. AngularJS 1.5控制器在單獨的文件中
- 6. AngularJs從單獨的文件注入多個指令到一個公共模塊
- 7. 將文件移動到單獨的子文件夾中
- 8. 所有控制器的Zend框架公共代碼
- 9. 將代碼移至單獨的功能
- 10. 使用SOQL將文件從私人移動到公共庫
- 11. Angularjs:代碼組織的控制器
- 12. 將html代碼移動到Angular CLI中的單獨html文檔中
- 13. 代碼點火器:放入單獨的控制器或一個?
- 14. 從單獨的控制器文件控制.xib中的按鈕
- 15. 從控制器移動代碼到模型(薄控制器胖模型)
- 16. Angularjs從控制器移動邏輯
- 17. 移動定製配置組到一個單獨的文件
- 18. 如何將一組控制器移動到文件夾中?
- 19. 將app.config的一部分移動到單獨的文件
- 20. 公共代碼
- 21. 不能將文件複製到公共存儲器
- 22. 如何將函數移動到android studio中的單獨文件?
- 23. 將嵌入式CSS移動到單獨的CSS文件
- 24. 將所有Javascript移動到Django的單獨文件中
- 25. 如何將express-mailer配置移動到單獨的文件?
- 26. 將XML註釋移動到單獨的文件
- 27. 將我的輸出代碼保存到單獨的文件中?
- 28. 如何在單獨的文件中拆分AngularJS代碼?
- 29. 將代碼從PIC18F2480移植到PIC18F2680微控制器
- 30. 用於單獨導軌控制器的獨立CSS文件夾
可以爲此服務嗎? – worldask 2014-09-19 15:45:49
我很確定服務範圍是不可能的...... – EricC 2014-09-19 15:49:14
@EricC $ scope只是一個服務函數的參數。 – cgTag 2014-09-19 16:20:14