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();
}
};
});
我添加了 observable 属性: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 的值。但我不确定。
我们如何解决这个问题?(在搜索过程中使用最新值)