0

私は asp.net mvc プロジェクトで Breeze を使用しています。

次の計算関数を定義しました。

var isDetached = ko.computed(function () {
    if (rolling())
        return rolling().entityAspect.entityState.isDetached();
});

エンティティはdetached、(たとえば) 最初に追加され、その後 (すぐに) キャンセルされたときです。

基本的なシナリオ:

  • (1) 新しい「ローリング」を作成する
  • >> entityState は「追加済み」です
  • (2) 作成操作のキャンセル (datacontext.cancelChanges)
  • >> entityState は 'Detached' です

問題:計算されたノックアウト オブザーバブルからの値を取得しようとすると、値entityState.isDetached()が動的ではないようです。前の基本的なシナリオから、ステップ 1 の後、ko.computedisDetached()は false です (Added であるため)。ステップ 2 の後、ko.computed はまだ false ですが、true になるはずです。

次のように値を明示的に取得すると機能します。

if (rolling().entityAspect.entityState.isDetached())
    ...

私の ko.computed が動的ではない理由は何ですか?

ありがとう。

4

2 に答える 2