在哪里保留指令的配置对象?

时间:2015-09-24 08:41:10

标签: angularjs angularjs-directive

我有一个视图,我多次使用指令。假设我的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
          }
]};

1 个答案:

答案 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>