对一组控制器进行相同的初始化
Same initialization to a set of controllers
假设我有50个控制器,其中25个需要相同的初始化代码,这有点长,例如:
$scope.a = 1;
$scope.b = "a";
...
$scope.zzz = "xyz";
最好的方法是什么?我不想复制并粘贴在25个控制器的每一个开头?我也不想放25个视图的ng-init
。
更新1
我使用的是angular-ui-router
,每个控制器都是每个视图/模板的每个状态。也许有一种方法可以在angular-ui-router
中做到这一点?
我提到的服务示例可以这样实现:
angular.service('yourService',function() {
return {
setInitialValues: function(scope) {
scope.a = 22;
//All your Initial values
}
}
});
并且在控制器中注入服务,并将您的作用域传递给控制器,并将其设置在它们之上。这将在Angular的范围内工作,并且这里没有全局
您只需声明一个函数
var f = function($scope) {
//Init stuff here
}
然后在本文下面写的所有25个控件中使用它。
//controler1初始化。。。。。f($范围);
看起来你的项目总有一天会变得很大。
我建议最好的方法是使用类似Class.js的库。
为将要创建的所有对象创建.init()和.dedestroy()。
您可以使用原型继承。把它想象成有一个基类或抽象类,其他类从中继承。
var BaseCtrl = function($scope) {
$scope.a = 1;
...
});
var AnotherCtrl = function($scope) {
BaseCtrl.call(this, $scope);
....
});
AnotherCtrl.prototype = Object.create(BaseCtrl.prototype, {});
如果您使用的是ControllerAs,则语法会有所不同。
相关文章:
- 尝试初始化()Spine's控制器和故障
- Angular.js延迟控制器初始化
- Angular JS控制器初始化错误
- 在路线转换后重新初始化物料控制器
- 通过因果报应测试管理angularjs控制器初始化
- 每次属性更改时,角度控制器都会初始化
- 角度测试:监视在控制器初始化时执行的函数
- AngularJS在初始化仪表板控制器之前使用$htttp获取仪表板设置
- 列表在控制器中初始化
- 更改包含的页面和URL,而无需在AngularJS中重新初始化控制器
- Angularjs 控制器初始化
- 角度.js:在异步加载的模板上初始化控制器
- 在 AngularJS 中实例化和初始化控制器
- 通过 ajax 请求初始化控制器
- AngularJS:初始化控制器时运行代码
- 用几个ajax请求初始化控制器的最佳方式
- 角度:在初始化控制器之前重新加载$rootscope用户
- 在用karma测试angularjs时初始化控制器错误
- AngularJS:如何从$routeProvider初始化控制器
- 如何在angularJS中初始化控制器$scope变量