Можно ли создать модель из значений вида в Angular?

0

У меня есть 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 таким образом, что данные подкрепляются шаблоном. Тем не менее я хотел бы избежать чрезмерного сбора данных.

благодаря

Теги:

2 ответа

0

Ваша форма имеет два очень похожих кода, и, вероятно, вы станете больше. Лучше размещать все представления в контроллере и просто строить из него. Позвольте мне показать вам пример.

Посмотреть

<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/

Надеюсь, это поможет вам!

0

Быстрый ответ: нет, это невозможно.

Вам необходимо определить $ scope.rule как массив в вашем контроллере, прежде чем вы сможете начать использовать его в своем представлении.

$scope.rule = [];

В представлении вы не сможете ничего добавить в свой $scope...

  • 0
    видимо я не могу

Ещё вопросы

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