infdig errors - AngularJS ng-options с динамически создаваемым массивом

У меня есть таблица с использованием ng-repeat, а внутри нее - выбор, использующий ng-options:

<tr ng-repeat="variable in variables">
  <td>
    <textarea ng-model="variable.extras">{{variable.extras}}</textarea>
  </td>
  <td>
    <select ng-model="variable.condition" ng-options="text for text in toplevelTriggerConditions($index)">
  </td>

Для select этот вызов toplevelTriggerConditions($index) в основном просматривает предыдущие строки таблицы, ищет различные условия и, если они проходят, захватывает значение variable.extras этой предыдущей строки, а затем возвращает массив на основе этого. Итак, если для дополнительных функций я поставил «один, два, три», тогда у выбора есть варианты один, два и три.

Визуально кажется, что это работает нормально, но я получаю массу $scope.infdig ошибок. По поиску в Google я вижу это потому, что массив, используемый с ng-options, является динамическим, а не статическим, но я не уверен, как обойти это, поскольку значение массива здесь должно динамически изменяться.

Надеюсь, это имеет смысл то, что я пытался описать.


person Scott    schedule 11.07.2014    source источник
comment
возможно, вам нужна директива, которая устанавливает массив, чтобы он не возвращался из функции в ng-options   -  person charlietfl    schedule 12.07.2014
comment
Массив будет динамически изменяться всякий раз, когда они изменяют переменную 'extras'. Я пытаюсь выяснить, как прямо сейчас следить за этой переменной. Extra, а затем я мог бы установить массив как другое свойство переменной   -  person Scott    schedule 15.07.2014
comment
правильно, но если массив изменяется в контроллере, он должен обновить DOm и, следовательно, параметры   -  person charlietfl    schedule 15.07.2014


Ответы (1)


Я обнаружил зарегистрированную ошибку, которая соответствует этому описанию, я думаю, что предлагаемое исправление - обновить до Angular 1.4. *.

Вот в чем проблема. https://github.com/angular/angular.js/issues/9464

Вот плункер для проверки на наличие проблемы. http://plnkr.co/edit/Q4EZDPCyAgUMKoWDPmrE?p=preview

В моем случае я возвращал один и тот же объект для каждого параметра ng, за исключением того, что я сортировал его в функции перед его возвратом. Angular это не понравилось, поэтому вместо этого я использовал угловой фильтр из этого вопроса SO AngularJS ngOptions sort array .

<tr ng-repeat="phv in placeHolderValues>
    <td>
        <select ng-model='phv.placevalueId'
                ng-options="t.id as t.name for t in valueOptions(phv) | orderBy:'toString()' ">
        </select>
    </td>
</tr>
person Jarrod Chesney    schedule 07.09.2015