Выпадающий список Kendo UI не обновляет угловую область

У меня есть 2 раскрывающихся списка пользовательского интерфейса кендо. Изменение первого раскрывающегося списка обновляет элементы во втором раскрывающемся списке — думаю, штат и раскрывающиеся списки округов.

Вот додзё, демонстрирующее рабочее поведение: http://dojo.telerik.com/USuhi/2

Проблема, если вы выполните следующие действия.

  1. Выберите «IN» в 1-м раскрывающемся списке.
  2. Выберите «IN 7» во втором раскрывающемся списке.
  3. Выберите «optionLabel» в первом раскрывающемся списке.
  4. Выберите «IN» в 1-м раскрывающемся списке.
  5. Выберите «IN 7» во втором раскрывающемся списке.

Вы ожидаете, что selected.county будет {"id": 7,"text": "IN 7"}, но на самом деле это null!

Есть ли лучший способ заставить угловой и кендо-уи хорошо играть вместе и получить ожидаемый результат?


person KyleUp    schedule 05.01.2016    source источник


Ответы (1)


Основываясь на додзе, попробуйте изменить эту строку

$scope.selected.county = null;

с

if ($scope.selected.state.text == "optionLabel") {
  $scope.selected.county = null;
} else {
  $scope.selected.county = {};
}

Конечно, вы должны выполнить более конкретный поиск пустого элемента, возможно, по идентификатору (например, -1).

person Mihail Stancescu    schedule 05.01.2016
comment
Просто любопытно. Как вы думаете, такое поведение ожидаемо? Или это ошибка? - person KyleUp; 05.01.2016
comment
Я не совсем уверен, я еще немного протестировал в додзё, и ваш текущий код работает, если вы выберете во второй раз другой элемент из второго раскрывающегося списка. Я предполагаю, что либо в пользовательском интерфейсе кендо есть какой-то кеш для модели, либо это связано с тем, что вы назначаете его null, а после обновления counties и некоторых внутренних проверок пользовательского интерфейса кендо при установке значения ng-model не проходит. Это работает, если вы поместите $scope.selected.county = null; в конце функции. Если у меня будет время завтра, я проверю код пользовательского интерфейса кендо. - person Mihail Stancescu; 06.01.2016