假设我有50个控制器,其中25个需要相同的初始化代码,例如:
$scope.a = 1;
$scope.b = "a";
...
$scope.zzz = "xyz";
最好的方法是什么?我不想复制并粘贴25个控制器的每个开头?我不想提出25个观点' ng-init
也是。
更新1
我正在使用angular-ui-router
,每个控制器都是每个视图/模板的状态。也许有一种方法可以在angular-ui-router
更多DRY中执行此操作?
答案 0 :(得分:1)
我提到的服务示例可以像这样实现:
angular.service('yourService',function() {
return {
setInitialValues: function(scope) {
scope.a = 22;
//All your Initial values
}
}
});
在控制器中注入服务并将范围传递给控制器并将其设置在控制器上。这将在Angular的范围内工作,这里没有任何全局
答案 1 :(得分:0)
您只需声明一个函数
var f = function($scope) {
//Init stuff here
}
然后在本文所写的所有25名控制者中使用它。
// controler1 init ..... F($范围);
答案 2 :(得分:0)
看起来你的项目有一天会变得很大。
我建议最好的方法是使用类似库的Class.js。
为将要创建的所有对象创建.init()和.destroy()。
答案 3 :(得分:0)
您可以使用原型继承。把它想象成有一个基类或抽象类,你的其他类继承。
var BaseCtrl = function($scope) {
$scope.a = 1;
...
});
var AnotherCtrl = function($scope) {
BaseCtrl.call(this, $scope);
....
});
AnotherCtrl.prototype = Object.create(BaseCtrl.prototype, {});
如果使用ControllerAs,语法会有所不同。