@Lait1989
Программист и это мне нравится

Создание однотипных кусков формы на основе директивы, но с разными именами полей angular?

Всем привет! Вот уже битый час пытаюсь понять как организовать создание элементов формы на основе директивы. Суть такая - есть директива, которая просто выводит определенный шаблон на страницу. В шаблоне указаны поля таким образом ng-model="VariantProperties[variantId].article"
Где variantId - переменная из контроллера, которая при каждом нажатии на кнопку "Добавить шаблон" увеличивается на единицу. Проблема в том, что при увеличении переменной и передаче ее в директиву эта переменная заменяется во всех шаблонах, а мне нужно чтобы она менялась только в последнем шаблоне.

Вот сама директива:
app.directive('template', function(){
    return {
        restrict:       'AE',
        templateUrl:    '/admin/templates/template.html',
        replace:        false,
        scope:          false
    }
});
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 2
mr_T
@mr_T
Web-разработчик
Очевидно, так происходит потому, что у variantId определен в scope уровнем выше, а директива вообще не создает изолированный scope, то есть использует тот, в котором директива вызвана. Соответственно, у них у всех один и тот же variantId. Проблема будет решена, если просто привязать сам объект к директиве, создав ей собственный scope:

{
        restrict:       'AE',
        templateUrl:    '/admin/templates/template.html',
        replace:        false,
        scope:          { object: '=ngModel' } // что-то типа того
}


<template ng-model='VariantProperties[variantId]'></template>
Ответ написан
Комментировать
@Lait1989 Автор вопроса
Программист и это мне нравится
Хорошо, спасибо. Попробую так. Тогда еще вопрос, как потом из директивы передать значения полей в контроллер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы