【发布时间】:2013-01-29 01:17:08
【问题描述】:
我有一个完美加载的淘汰赛模板,但 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 会触发两次。不,这是奇怪的部分..一次是在内容出现在页面上之前,第二次是之后....
【问题讨论】:
-
也许尝试在 jsFiddle 中获取它。您可以从这里开始:jsfiddle.net/rniemeyer/dvZQM
-
嗯..是的..小提琴是完美的。我已经把它缩小到一个奇怪的页面问题。更新了问题。
标签: events knockout.js