Шаблон Durandal Startkit не содержит реализованного поиска (это нормально). Возможно, то, что он должен иметь, - это наблюдаемое свойство и его привязка. Я пытаюсь показать вам, как связать поисковый текст с этой демонстрацией, но он ищет неправильное значение (старое значение).
Вот ViewModel: Shell.js (из коробки)
define(['plugins/router', 'durandal/app'], function (router, app) {
return {
router: router,
search: function() {
app.showMessage('Search not yet implemented...');
},
activate: function () {
router.map([
{ route: '', title:'Welcome', moduleId: 'viewmodels/welcome', nav: true },
{ route: 'flickr', moduleId: 'viewmodels/flickr', nav: true }
]).buildNavigationModel();
return router.activate();
}
};
});
Я добавил наблюдаемое свойство: searchText и изменил функцию поиска, чтобы отобразить ее «значение»:
searchText: ko.observable(),
search: function() {
app.showMessage('Search not yet implemented... Searching for: ' + this.searchText() );
},
и я привязал его к представлению: shell.html
<input type="text" class="search-query" placeholder="Search" data-bind="value: searchText">
Что-то не так, в поиске отображается старое значение, а не текущее. По-видимому, сначала выполняется функция поиска, а затем устанавливается/обновляется значение searchText. Но я не уверен.
Как мы можем решить эту проблему? (чтобы использовать последнее значение во время поиска)