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の値が設定/更新されます。しかし、よくわかりません。
どうすればこの問題を解決できますか? (検索時に最新の値を使用するため)