knockoutjs在订阅observable后立即执行回调

时间:2016-04-12 10:39:09

标签: javascript knockout.js

我有:

    this.selectedItem.subscribe(model => {
        this.currentEditor(this.editors.find(e => e.canRender(model)));
        this.currentEditor().render(model);
    });

其中this.selectedItem已有值。

订阅后是否可以立即运行回调(但保持匿名)?

2 个答案:

答案 0 :(得分:1)

您可以在valueHasMutated上致电this.selectedItem,所以

this.selectedItem.valueHasMutated()

然而,这不仅会运行您的回调,还会通知其他人,例如绑定,计算等。

所以你最好有一个命名函数,并在需要时调用它,并在订阅中也使用它。

答案 1 :(得分:0)

您可以将函数提取到变量中并调用它:

var changeHandler = (model) => {
    this.currentEditor(this.editors.find(e => e.canRender(model)));
    this.currentEditor().render(model);
};
this.selectedItem.subscribe(changeHandler);
changeHandler();