knockoutjs ObservableArrays и функция сортировки: пользовательский интерфейс не обновляется
В моей модели представления у меня есть knockoutjs ObserableArray. Сразу после того, как я инициализировал ViewModel, он успешно связывает данные. Затем мне нужно отсортировать коллекцию.
<code>$.each(vm.searchResults(), function (i, property) { console.log(property.Name()); }); vm.searchResults().sort(function (a, b) { return a.Name().toLowerCase() > b.Name().toLowerCase() ? 1 : -1; }); $.each(vm.searchResults(), function (i, property) { console.log(property.Name()); }); </code>
Как вы можете видеть, я вывожу Имя элемента на консоль, чтобы увидеть порядок до и после сортировки. Сортировка работает просто отлично. Проблема с обновлением пользовательского интерфейса. Почему-то пользовательский интерфейс не обновляется.
Затем попробуйте удалить запись из массива с помощью следующего кода, чтобы увидеть, будет ли пользовательский интерфейс реагировать на это:
<code>vm.searchResults().shift(); </code>
Пользовательский интерфейс остается прежним и больше не обновляется. В чем здесь проблема?
Edit:
Вот также пример случая:http://jsfiddle.net/tugberk/KLpwP/
Та же проблема и здесь.
Edit:
Я решил проблему, как показано в этом примере:http://jsfiddle.net/tugberk/KLpwP/16/ Но я все еще не уверен, почему это сработало, как я пытался вначале.