在淘汰赛中调用读取功能

时间:2016-06-16 08:54:37

标签: javascript html html5 knockout.js

我想知道如何调用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() ¿???
        })

2 个答案:

答案 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()