我有一些控制器与一些公用代码,具体来说$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