我想知道如何调用read函数。当我写入值时:valueView调用write函数,但我希望在函数结束时调用read函数。有一些提醒淘汰阅读的方法吗?
<input type="text" data-bind="value: valueView" placeholder="VALUE">
self.valueView = ko.pureComputed({
read: function () {
var value = “John”;
return value;
},
write: function (value) {
some code;
callRead() ¿???
})
答案 0 :(得分:1)
从一个observable中读取(获取)可以通过“调用函数”来完成。 写(设置)可以通过传递一个值来完成。
要在不创建订阅的情况下获取计算值内的值,可以使用peek
方法。
var myObservable = ko.observable(1);
console.log(myObservable()); // Prints 1
myObservable(2);
console.log(myObservable()); // Prints 2
console.log(myObservable.peek()); // Also prints 2
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
您可以在敲除可写的可观察documentation page的示例中看到这个:
this.firstName = ko.observable('Planet');
this.lastName = ko.observable('Earth');
this.fullName = ko.pureComputed({
read: function () {
return this.firstName() + " " + this.lastName();
},
write: function (value) {
var lastSpacePos = value.lastIndexOf(" ");
if (lastSpacePos > 0) { // Ignore values with no space character
this.firstName(value.substring(0, lastSpacePos)); // Update "firstName"
this.lastName(value.substring(lastSpacePos + 1)); // Update "lastName"
}
},
owner: this
});
答案 1 :(得分:0)
您可以通过简单地将其称为没有参数的函数来读取当前值。
self.valueView()
执行Read功能,
self.valueView(someValue)
执行Write函数,将someValue
传递给它。
您还可以强制计算机使用valueHasMutated
方法重新评估和更新其他相关的可观察量/计算值,即self.valueView.valueHasMutated()