0

KnockoutJSの使用に大きな問題があります。私のビューモデルには、実際には別のビューモデルであるメソッドと呼ばれるフィールドがあります。

このビューモデルは、3つの異なるもののいずれかになります(ドメインモデルのポリモーフィックオブジェクトにマップされます)。これを解決するために、ドメインモデルで選択されたメソッドのタイプをチェックし、そのタイプのデータをバインドするテンプレートを表示するテンプレートを使用します。

メソッドのタイプをチェックする関数は次のようになります。

this.getTemplate = function (data) {
        var method = data.original.get_Method();
        if (method instanceof MyProj.MethodA)
            return "methodA";
        else if (method instanceof MyProj.MethodB)
            return "methodB";
        else if (method instanceof MyProj.MethodC)
            return "methodC";
    }

テンプレートをバインドするマークアップは次のようになります。

<div data-bind="template: {name: getTemplate($data), data: $data.Method}"></div>

これは実際には非常にうまく機能し、UIのドロップダウンを介してメソッドのタイプを変更すると、ドメインモデルが更新され、適切なテンプレートが表示されます。しかし、ここに私の問題があります。各テンプレートには、各メソッドタイプに固有のさまざまなフィールドが含まれています。テンプレートの1つによって表示されるビューモデルの値の1つを変更すると、UIが点滅します。これは、テンプレートが再度選択されるために発生すると思います。これは非常に苛立たしく、非常に悪いように見えます。

この問題を解決する方法について何かアイデアはありますか?どんな助けでも大歓迎です!

前もって感謝します

/Björn

4

1 に答える 1

0

getTemplate関数内でobservableを使用しましたか。そのオブザーバブルの値を更新すると、テンプレートが再レンダリングされ、フラッシュ効果が得られます。

このリンクをチェックアウトパート:「注5:使用するテンプレートを動的に選択する」。

于 2012-08-09T11:12:00.603 に答える