0

我将以下输入类型绑定到视图模型中可观察的“页面”。

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

用户可以在文本输入中输入任何值,但如果值在值列表中,我只希望绑定发生在我的模型中。我查看了敲除验证框架并构建了适当的扩展来引发错误,但我找不到确保模型中的“页面”属性不更新的方法。

有没有其他人在使用 Knockout.js 时遇到过这种情况?

谢谢!-鲍勃

4

1 回答 1

2

你应该能够通过扩展你的 observable 来做到这一点。

文档位于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;
};

然后你会像这样创建 observable:

var page = ko.observable().extend({ 
    allowedValues: [ /* place the allowed values in this array */] });
于 2013-04-18T23:50:40.637 回答