我有一个视图,我多次使用指令。假设我的html看起来像这样:
<my-directive config="config1"></my-directive>
<my-directive config="config2"></my-directive>
<my-directive config="config3"></my-directive>
<my-directive config="config4"></my-directive>
config1,config2等是范围变量 - 包含一些配置内容的对象。因为configX是相当大的对象,我的控制器看起来不太好。我想让控制器更简单。我想将此configX对象保留在其他位置。我应该把它留在哪里?在Angular工厂注入控制器?实际控制器延伸的另一个控制器或者你有更好的解决方案吗?
Config对象如下所示:
$scope.config1 = {
value1: "value1",
value2: "some value",
value3: "some value 3",
list: [
{
v1: "string string",
v2: "string string",
v3: int
},
{
v1: "string string",
v2: "string string",
v3: int
},
{
v1: "string string",
v2: "string string",
v3: int
},
{
v1: "string string",
v2: "string string",
v3: int
}
]};
答案 0 :(得分:1)
如果您的配置是静态的,我会将它们存储在一些常量中,它将始终返回相同的数据。
angular.module("yourApp").constant("configForYourDirective",{
config1: {
prop1: "John",
prop2: "Doe"
,
config2: {
prop1: "John",
prop2: "Papa"
}
});
然后,一个简单的扩展将把这些配置添加到你的$ scope
angular.module("yourApp").controller("someController", [
"$scope",
"configForYourDirective",
function($scope, configForYourDirective){
angular.extend($scope, configForYourDirective);
}
]);
你的模板必须看起来像这样:
<my-directive config="config1"></my-directive>
<my-directive config="config2"></my-directive>