2016-12-15 36 views
0

我試圖讓在按鍵事件處理函數的輸入元素的值結合無法訪問當前項目的事件knockoutjs該打印裝訂

<input data-bind="textInput: searchInput, event: { keypress: filterList }" type="text" placeholder="Search.."> 

var ViewModel = function() { 
    self.searchInput = ko.observable(""); 
    self.filterList = function(input) { 
     console.log(input); 
     return true; 
    } 
}; 

而不是打印輸入字段的值, ViewModel對象。
如何獲取filterList處理函數中每個按鍵上的輸入字段的值?

回答

1

既然你存儲inputself.searchInput,這是一個observable,你可以直接使用它的filterList處理程序中 -

var ViewModel = function() { 
var self = this; 
    self.searchInput = ko.observable(""); 
    self.filterList = function() { 
     console.log(self.searchInput()); 
     return true; 
    } 
}; 

Fiddle

另外,我想說的keypress事件更改keyup,因爲它提供了更準確的結果(至少在我的小提琴中)。

<input data-bind="textInput: searchInput, event: { 'keyup': filterList }" type="text" placeholder="Search.."> 
+0

是的,但它提供了輸入,而不是當前的前值,例如,如果有's'和我添加了'',它會打印's',然後,如果我加'w',它會打印出'sa' – Hue

+0

好的,我在評論後看到了你的編輯。謝謝! – Hue

+0

'textInput'綁定具有各種奇特的事件組合邏輯,以確保對輸入值的所有更改都進行了註冊。我建議**對**也綁定到'keyup'事件。最好在你的viewmodel中訂閱'searchInput'。您甚至可以節制/限制開箱即用的過濾器邏輯! – user3297291