0

非常に奇妙な問題に遭遇しました。複数のapplyBindings()がありますが、それらはすべて異なる要素を対象としています。これはすべて正常に機能していました。すべてのリソースが読み込まれると(yepnopeの完全なコールバック)発生しますが、(内部イベントシステムから)発生したイベントに基づいて発生するため、奇妙なエラーが発生しているようです(ビューモデルには観察可能なものがありませんが、それは正しいモデルを見ていないためです)。

問題は、最後のバインディングが何らかの理由で他のすべてのバインディングを上書きしているように見えることです。したがって、一意のIDを持つ4つの要素と、それぞれが対応する要素にバインドされている4つのビューモデルがある場合、バインディングは次のように発生すると予想されます。

element_a -> view_model_a
element_b -> view_model_b
element_c -> view_model_c
element_d -> view_model_d

ただし、何らかの理由で、view_model_dがバインドされるとバインドが変更されるように見えるため、すべてが次のようになります。

element_a -> view_model_d
element_b -> view_model_d
element_c -> view_model_d
element_d -> view_model_d

私が言ったように、これは以前はうまく機能していましたが、バインディングを適用する非同期の方法に目を向けたので、少し壊れているようです、バインドされた要素はすべてhtmlにあり、自己完結型です(つまり、動的に注入されたものはなく、 DOMで重複しないでください)。また、firebugでデバッグする場合、ビューモデルと要素は正しく、未定義ではありません。これは、最後に呼び出されたものが他のすべてを上書きする理由を説明している可能性があります。

私はjsfiddleを試してみましたが、プロジェクトの複雑な性質と外部テンプレートおよび依存関係のため、それは不可能でした。

KnockoutJSではなく、すべてが間違っていることを示していますが、なぜそれが正常に機能していたのか理解できません。変更されたのは、適用バインディングの順序とタイミングだけです。

applyBindingsが他の要素に出血したり、以前のバインディングを上書きしたりするのを見たことがある人はいますか?

4

1 に答える 1

0

いつものように、答えは私がばかであることに帰着します。オプションの1つとしてtemplateUrlを使用する外部テンプレートローダーを使用しているため、何らかの理由でそれはtemplateurlでした。これは、何らかの理由で元々機能していたはずですが、現在ロードされる順序のために、同じページをリロードしていました。目的のテンプレートではありません。つまり、ページバインディング全体が再ロードされます:(

于 2012-07-09T10:32:28.967 に答える