我已经使用了 durandal 入门套件并尝试使用搜索框。在 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() 总是未定义的。我在我的生产应用程序中遇到了同样的问题,但能够用这个简单的案例重现它。我在这里想念什么?