У меня есть представление, где я использую директиву несколько раз. Скажем, мой 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
}
]};
Если ваши конфиги статичны, я бы сохранил их в некоторой константе, которая всегда будет возвращать одни и те же данные.
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>