2

完全に読み込まれているノックアウト テンプレートがありますが、afterRender イベントが 2 回発生しています。関数が誤って 1 回呼び出され、afterRender によって 1 回呼び出される原因となっているのはデータ オブジェクトの問題だと思いましたが、アラート、それでも2回呼び出されます。

これがhtmlコードです...

<body>
 <div id="control-wrap" data-bind="template: { name: 'control_bar', data: App.Controls, afterRender: function(){ alert('test');} }"></div>
 <div id="map_canvas" style="width:100%; height:100%"></div>
 <div id="info-window-container" data-bind="template: { name: 'info-yacht-racing', foreach: App.Transponders.transponders, afterRender: App.Tracker.infoWindowInit}"></div>
 <div id='notice-overlay'></div>
</body>

最大の問題は、このフォームのトラブルシューティングを行う場所がわからないことです。何か案が?Chrome インスペクターを使用して、何がイベントをトリガーしているかを追跡できますか? Google マップ レンダラーは何かをいじっているのでしょうか? テンプレートを使用した foreach により、親テンプレートの呼び出しが複数回トリガーされますか?

ホワイトアトム

更新: 奇妙さが続きます... テンプレートを空白にすると、一度だけ起動します。ただし、コンテンツがある場合 ('.' だけでも)、afterRender が 2 回発生します。いいえ、ここに奇妙な部分があります..1回目はコンテンツがページに表示される前で、2回目は後です....

4

1 に答える 1

2

それを見つけた....

https://github.com/fazzamar/Knockout.js-External-Template-Engine/commit/5b053acd0465cd5c98b947d97cbd4d2e675c9f52

これは、外部テンプレート エンジンのバグのようです。自我を1枚取り出す。参照して、問題は解決しました。

ヘルプ RP に感謝します。コードをさらに単純化する必要がありました。これにより、問題を解決できました。

乾杯!

于 2013-01-28T17:17:08.957 に答える