デュランダル スターター キットを入手し、検索ボックスを使用しようとしました。shell.html で入力ボックスを変更して、searchTerm へのデータバインディングを設定しました。
<form class="navbar-search pull-right" data-bind="submit:search">
<input type="text" class="search-query" placeholder="Search" data-bind="value:searchTerm">
</form>
次に、shell.js で、次のコードを使用して観察可能な searchTerm を追加しました。
define(function(require) {
var router = require('durandal/plugins/router'),
app = require('durandal/app');
var searchTerm = ko.observable();
return {
searchTerm: searchTerm,
router: router,
search: function() {
app.showMessage('Search for ' + searchTerm() + ' not yet implemented');
},
activate: function () {
return router.activate('welcome');
}
};
});
このコードは、IE (9 および 10) を除くすべてのブラウザー (Chrome、Firefox、Safari) で機能します。問題は、IE では searchTerm() が常に未定義であることです。本番アプリでも同じ問題が発生していますが、この単純なケースで再現できました。ここで何が欠けていますか?