1. ホーム
  2. javascript

[解決済み] ko.utils.unwrapObservableはいつ使うのか?

2022-09-08 16:45:25

質問

KnockoutJSを使用して、いくつかのカスタムバインディングを書きました。どのような場合に ko.utils.unwrapObservable(item) コードを見てみると、この呼び出しは基本的に item がobservableであるかどうかをチェックします。もしそうなら、value()を返し、そうでないなら、ただ値を返します。Knockoutのカスタムバインディングの作成に関するセクションを見ると、次のような構文になっています。

var value = valueAccessor(), allBindings = allBindingsAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);

この場合、observableを起動するために () を呼び出しますが、その後 ko.utils.unwrapObservable . 私はただ、いつ一方と他方を使うべきか、あるいは常に上記のパターンに従って両方を使うべきかについて、ハンドルを握ろうとしているのです。

どのように解決するのですか?

この場合 ko.utils.unwrapObservable は、observableが与えられたかどうか分からない場合に使うべきです。 これは一般的に、observableまたはnon-observableがそれに対してバインドされる可能性があるカスタムバインディングになるでしょう。

上のコードで valueAccessor() の呼び出しは、実際にはobservableをアンラップしているわけではありません。 正しいコンテキストでバインディングに渡された値を取り出しているだけです(それを保護するために関数でラップされています)。 の戻り値は valueAccessor() の戻り値はobservableであってもなくてもかまいません。 それはバインディングに渡されたものなら何でもです。