【问题标题】:Why is knockout firing afterRender event twice?为什么淘汰赛触发 afterRender 事件两次?
【发布时间】: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


【解决方案1】:

找到了……

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

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

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

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多