Где хранить объекты конфигурации для директив?

0

У меня есть представление, где я использую директиву несколько раз. Скажем, мой 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 где-то в другом месте. Где я должен его хранить? В Угловой завод вводится в контроллер? Другой контроллер, который расширяет фактический контроллер? Или у вас есть лучшее решение?

Объекты 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
    Вы можете опубликовать свой объект конфигурации? Из твоего сообщения я бы предположил, что ты пишешь фабрику / сервис
  • 0
    Я разместил пример конфигурации объекта - список обычно может содержать от 3 до 10 элементов. Я использую 4 - 8 объектов конфигурации в одном представлении.
Теги:
angularjs-directive

1 ответ

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>
  • 0
    @latata: Извините, я написал ерунду. Если ваша конфигурация статическая: используйте константу вместо фабрики (я отредактировал мой принятый ответ)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню