2013-04-18 58 views
0

我有以下輸入類型綁定到我的視圖模型中的「頁面」可觀察。如何將一個observable限制爲Knockout.js中的一組特定值?

<input type="text" data-bind="value: page"/> 

用戶可以輸入在文本輸入的任何值,但我只希望在我的模型出現綁定如果值是值的列表中。我研究了knockout-validation框架,並構建了適當的擴展來提示發生了錯誤,但我無法找到確保「page」屬性未在我的模型中更新的方法。

有沒有其他人遇到這種情況與Knockout.js?

謝謝! -Bob

回答

2

你應該可以通過擴展你的觀測值來做到這一點。

該文檔是在http://knockoutjs.com/documentation/extenders.html

這裏作爲什麼可滿足您的需求的例子:

ko.extenders.allowedValues = function (target, valuesArray) { 
    var result = ko.computed({ 
     read: target, 
     write: function (newValue) { 
      if (valuesArray.indexOf(newValue) !== -1) { 
       target(newValue); 
      } else { 
       //handle the user inputting a value not allowed here 
      } 
     } 
    }); 

    result(target()); 
    return result; 
}; 

然後您可以創建可觀察到,像這樣:

var page = ko.observable().extend({ 
    allowedValues: [ /* place the allowed values in this array */] }); 
+0

謝謝。這就是我一直在尋找的! – RullDawg

相關問題