Knockout.js 绑定文本中的双向检查绑定(如computedObeservable)
我必须以不同的方式编写和读取单选按钮的选中绑定,就像使用计算绑定一样。我不想把ViewModel和每个单选按钮的计算观察值弄乱。所以我试图控制标记中绑定文本之外的绑定。也许通过一个例子可以更清楚地说明这一点 例如: 用户应该能够使用单位设置值。他可以选择单位并设置值。有一个通用值,用户可以选择(单选按钮)。不过,应该可以写入特定值(输入)。这里是标记(我的itention是通过“绑定”来表示的,选中读,选中写)Knockout.js 绑定文本中的双向检查绑定(如computedObeservable),knockout.js,Knockout.js,我必须以不同的方式编写和读取单选按钮的选中绑定,就像使用计算绑定一样。我不想把ViewModel和每个单选按钮的计算观察值弄乱。所以我试图控制标记中绑定文本之外的绑定。也许通过一个例子可以更清楚地说明这一点 例如: 用户应该能够使用单位设置值。他可以选择单位并设置值。有一个通用值,用户可以选择(单选按钮)。不过,应该可以写入特定值(输入)。这里是标记(我的itention是通过“绑定”来表示的,选中读,选中写) ... 这样做可能吗?如果您在无线电输入上设置了值属性,那么Knockout将根
...
这样做可能吗?如果您在无线电输入上设置了
值
属性,那么Knockout将根据它设置您的可观察值。从您发布的示例中,我相信您应该能够使用标准的checked
绑定来对可观察对象进行绑定。比如:
<div data-bind="foreach: values">
<input type="radio" name="valuRadios" value="0.25" data-bind="attr: { value: $data }, checked: $parent.myValue" />
<label data-bind="text: $data"></label>
</div>
<input data-bind="value: myValue" />
<div data-bind="text: myValue"><div>
ko.bindingHandlers.specialChecked = {
init: function(element, valueAccessor) {
var original = valueAccessor();
var filter = ko.computed({
read: function() {
//return original() or some modified version of it
},
write: function(newValue) {
//write to original(newValue) or modify newValue first
},
disposeWhenNodeIsRemoved: element
});
ko.applyBindingsToNode(element, { checked: filter });
}
};
此处示例:
如果场景稍微复杂一点,那么我将使用的策略是创建一个自定义绑定,该绑定基于原始可观察对象生成一个计算值,然后使用这个新的计算值绑定元素,如下所示:
<div data-bind="foreach: values">
<input type="radio" name="valuRadios" value="0.25" data-bind="attr: { value: $data }, checked: $parent.myValue" />
<label data-bind="text: $data"></label>
</div>
<input data-bind="value: myValue" />
<div data-bind="text: myValue"><div>
ko.bindingHandlers.specialChecked = {
init: function(element, valueAccessor) {
var original = valueAccessor();
var filter = ko.computed({
read: function() {
//return original() or some modified version of it
},
write: function(newValue) {
//write to original(newValue) or modify newValue first
},
disposeWhenNodeIsRemoved: element
});
ko.applyBindingsToNode(element, { checked: filter });
}
};
非常感谢。好吧,这比我想象的要简单。另外,在我的情况下,定制绑定的策略是不需要的,不过这是一个很好的例子。谢谢。也许以后会对我有帮助。