2013-06-27 27 views
0

我已購買杜蘭達入門工具包並試圖使用搜索框。 在shell.html我已經改變了輸入框有一個數據綁定到SEARCHTERM:durandal入門工具包搜索功能和IE

<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我已經加入了觀察到的搜索關鍵詞與此代碼:

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()總是未定義的。我在我的製作應用程序中遇到了同樣的問題,但能夠通過這個簡單的例子重現它。我在這裏錯過了什麼?

回答

2
<form class="navbar-search pull-right" data-bind="submit:search"> 
<input type="text" class="search-query" placeholder="Search" data-bind="value:searchTerm, valueUpdate: 'afterkeydown'" /> 
</form> 

您的輸入框需要以/>結束纔有效。另外,將valueUpdate添加到數據綁定中,以便在提交表單之前記錄更改。

http://jsfiddle.net/gnKth/1/

+0

如果刪除提交按鈕的撥弄有同樣的問題。通過在文本輸入上敲擊輸入,表單被提交,但敲除綁定不會發生.https://github.com/knockout/knockout/issues/760 – voam

+0

?我離開了/>結束,http://jsfiddle.net/gnKth/2/我刪除按鈕並添加/>並按回車,它明顯更新爲我?如果沒有其他更新的關鍵按下的價值就像在這個小提琴http://jsfiddle.net/gnKth/3/ –

+0

如果您更改'hey2'的值在文本框中它不會更新在提交IE瀏覽器。 – voam