2016-04-12 12 views
1

を購読する:knockoutjsは直後にコールバックを実行して、私が持っている、観察

this.selectedItemはすでに値を持っている
this.selectedItem.subscribe(model => { 
     this.currentEditor(this.editors.find(e => e.canRender(model))); 
     this.currentEditor().render(model); 
    }); 

登録した直後にコールバックを実行することはできますが(匿名のままにしておきますか?)

+4

'this.selectedItem'で' valueHasMutated'を呼び出すことができます。だから、 'this.selectedItem.valueHasMutated()'これはあなたのコールバックを実行するだけでなく、バ​​インディング、計算などの他の人にも通知します。そうすれば、命名された関数を持ち、必要なときに呼び出して、 'subscribe' – nemesv

+0

@nemesv、私の意見では、あなたのコメントはかなり完全な答えであり、もしそうだったら私はそれをアップヴォートするでしょう。回答として再投稿することを検討してください。 –

+0

@nemesv、ありがとう。それを受け入れるためにあなたのコメントを答えに変換してください。 – Veikedo

答えて

1

あなたはとても

this.selectedItem.valueHasMutated() 

this.selectedItemvalueHasMutatedを呼び出すことができますしかし、これはあなたのコールバックを実行しますが、また他のみんなに知らせるだけでなく、、例えばバインディング、計算など

あなたは、それが必要なときに呼び出すと、購読でもそれを使用します。

0

あなたは変数に関数を抽出し、それを呼び出すことができます。

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

質問は変数の抽出を避ける方法です。 C#のafaik RXはそれを可能にする(追加のパラメータを渡すことによって) – Veikedo

関連する問題