我有一个名为foo的observable,然后是一个与foo
互连的计算器foo = ko.observable();
bar = ko.computed(function(){
read: function() {
var blah = parseFloat(self.foo()),
qux = blah + 1;
return qux;
},
write: function(value)
{
value = parseFloat(value);
self.foo(value - 1);
},
});
我有这个文本域
<input type="text" name="foo" id="foo" placeholder="Foo" class="border-bottom" data-bind="value: foo"/>
我有这个jQuery Mobile Range Slider
<input class="ratio" type="range" name="slider-percent" min="0.00" max="100.00" data-highlight="true" step="0.1" data-bind="value: bar"/>
然后是KO的调试标记
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
以下是我遇到的一些问题
foo
文本字段时,我发现bar
的值通过调试标记发生了变化,但它没有反映在实际的滑块中。foo
和bar
都不会更新。有没有办法解决这个问题?
答案 0 :(得分:0)
这是一个工作小提琴:http://jsfiddle.net/r7Ruc/1/
计算声明中有一个额外的函数()。如果同时使用read和write,则应将对象传递给computed,而不是函数。
代码,因为“链接到jsfiddle.net必须附带代码。”
var CTR = function () {
var self = this;
self.foo = ko.observable();
self.bar = ko.computed({
read: function () {
var blah = parseFloat(self.foo()),
qux = blah + 1;
return qux;
},
write: function (value) {
console.log(value);
value = parseFloat(value);
//self.share(value - 1);
},
});
}
var c = new CTR();
ko.applyBindings(c);