2

我有一个完美加载的淘汰赛模板,但是 afterRender 事件触发了两次。我认为这是我的数据对象中的一些问题,导致该函数被意外调用一次,一次被 afterRender 调用,但我已将其减少为警报,它仍然被调用两次。

这是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 检查器来跟踪触发事件的原因吗?谷歌地图渲染器会搞砸吗?带有模板的 foreach 会导致父模板调用多次触发吗?

白原子

更新:奇怪继续......如果我将模板设为空白,它只会触发一次。但是如果有任何内容(即使只是一个'.'),afterRender 会触发两次。不,这是奇怪的部分..一次是在内容出现在页面上之前,第二次是之后....

4

1 回答 1

2

找到了....

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

这似乎是外部模板引擎中的错误。拿出一个自己。参考,问题就解决了。

感谢 RP 的帮助,您肯定让我对代码进行了一些更简化 - 这让我解决了它。

干杯!

于 2013-01-28T17:17:08.957 回答