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