У меня есть select с ng-options, он использует данные с одного из контроллеров. Данные - это двумерный массив, полученный ajax при запуске приложения с парами ключ-значение, например:
'option1' : array[ 1: "Test", 2: "Test2" ],
'option2' : array[ 12: "abc", 26: "zyc" ],
'option3' : array[ 14: "fdfd", 27: "fdf" ],
'option4' : array[ 15: "dff", 28: "dffd" ],
и посмотреть:
<select name="selectedLink" id="selectedLink" ng-model="selectedLink" ng-options="key as value for (key , value) in links[selectedType]" ng-change="changeLinkName()" placeholder="Please Select" class="annotation-element">
При запуске приложения все работает нормально, но после изменения массива ссылок возникла проблема. Пользователь может добавить новый элемент, и это будет выглядеть так:
// Watch new element variables
$scope.addNewElement = function() {
var newElement = $('#inputElementId').val();
// (...)
$scope.links[newElement[0]][newElement[1]] = newElement[2];
$scope.selectedLink = newElement[1];
// (...)
};
Проблема в том, что представление не обновляется. В опциях выбора по-прежнему есть только старые данные массива ссылок. Я пробовал использовать $ scope. $ Apply, но это не сработало.
Я могу только «перерисовать» все параметры с помощью jquery, но тогда я не могу использовать ng-model, ng-change и т. Д. Что мне делать, чтобы запускать обновление пользовательского интерфейса после изменения данных массива?
var newElement = $('#inputElementId').val();
- я не понимаю, почему вы не используете подходdirective
или «привязка» - главное преимущество Angular. - person daan.desmedt   schedule 09.08.2016