Подтвердить что ты не робот

Angular UI select2 директива - обновление модели программно не отражено в виджетах

Я пытаюсь обновить модель select2 программно и обновить представление, но оно не работает.

Здесь пример плункера, раздвоенный из проекта пользовательского интерфейса Angular: http://plnkr.co/edit/kQROgr?p=preview

Я попытался добавить initSelection(), чтобы перейти к select2 docs (http://ivaynberg.github.com/select2/ "Реагирование на внешние изменения значений" ), но это не сработало. Я также пробовал с select2 3.3.2, и это тоже не решило.

Есть два вопроса: 1) Нажмите "Обновить модель", обновите модель, но она не добавит тег в виджет select2. Также 2) Нажмите "Обновить-Модель", а затем выберите select2, чтобы выбрать второй тег, первый тег, добавленный "Обновить-Модель", исчезнет.

4b9b3361

Ответ 1

Я знаю, что вопрос немного старый, но эй... Я нашел его и не знал ответа.

Мне удалось сделать то, что я хотел, настроив модель, а затем напомнив initSelection() в конфигурации select2Options

Итак, моя конфигурация была такой:

$scope.select2Options = {
allowClear: true
minimumInputLength: 3
quietMillis: 1000
initSelection: ->
  $scope.property
query: (query)->
  Properties.query({q: query.term}, (response)->
    data = {results: processData(response['properties'])}
    query.callback(data)
    )

  processData = (data)->
    results = []
    angular.forEach(data, (item, index)->
      results.push(item)
      )
    return results

}

Затем у меня был модальный возврат вновь созданного объекта следующим образом:

modalInstance.result.then((result)->
    $scope.property = result
    $scope.select2Options.initSelection()
  )

В основном, когда он обновил модель, мне пришлось вручную повторно инициализировать виджет select2. Я думаю, что это можно было бы обработать с помощью $scope. $Watch, если бы вы действительно этого хотели, но это, вероятно, было бы пустой тратой, если у вас не будет обновлено свойство из нескольких мест или чего-то еще.