У меня есть form
со сложной функциональностью (drag-and-drop, удаление групп элементов, добавление групп элементов), которые я бы хотел обработать с помощью Angular. Форма уже отображается с исходными значениями.
<form>
<div>
<input ng-model="rule[0].rule" value="bar">
<select ng-model="rule[0].value">
<option>A</option>
<option selected>B</option>
</select>
</div>
<div>
<input ng-model="rule[1].rule" value="foo">
<select ng-model="rule[1].value">
<option selected>1</option>
<option>2</option>
</select>
</div>
...
</form>
Проблема в том, что Angular аннулирует эти значения и не создает массив rule
в $scope
. Я хочу создать массив rule
объектов из значений моего шаблона.
Я понимаю, что мое требование нарушает шаблон MVC таким образом, что данные подкрепляются шаблоном. Тем не менее я хотел бы избежать чрезмерного сбора данных.
благодаря
Ваша форма имеет два очень похожих кода, и, вероятно, вы станете больше. Лучше размещать все представления в контроллере и просто строить из него. Позвольте мне показать вам пример.
Посмотреть
<div ng-repeat="item in options">
<input ng-model="item.rule">
<select ng-model="item.value">
<option ng-repeat="option in item.options" ng-value="option">{{option}}</option>
</select>
<span>{{item.value}}</span>
</div>
контроллер
$scope.options = [{
value: 'B',
rule: 'foo',
options: ['A', 'B']
}, {
value: 2,
rule: 'bar',
options: [1, 2]
}];
https://jsfiddle.net/rzadc03v/
Надеюсь, это поможет вам!
Быстрый ответ: нет, это невозможно.
Вам необходимо определить $ scope.rule как массив в вашем контроллере, прежде чем вы сможете начать использовать его в своем представлении.
$scope.rule = [];
В представлении вы не сможете ничего добавить в свой $scope
...