首页 > 解决方案 > 为什么 Kendo View 上的“显示”事件会触发两次?

问题描述

如果将 Kendo 视图渲染为 Layout(使用 layout.showIn()),则视图的 show 事件会触发两次。有趣的是,如果视图直接呈现到 DOM 元素中(使用 view.render()),则该事件只会触发一次,就像它应该的那样。

该代码很好地从 Kendo UI Dojo thingee 复制而来。我想知道你能不能运行这个: https ://dojo.telerik.com/AkOwiMAZ/2

<div id="app"></div>
<script>
var foo = new kendo.View("<span>Foo</span>", { hide: function() { console.log("Foo is hidden now"); }, show: function() { console.log( "Foo is shown now"); }});

var layout = new kendo.Layout("<header>Header</header><section id='content'></section><footer></footer>");

// Creating the layout, and using the showIn method to render the view
// is where I'm having the issue (2 'show' events fire)
layout.render($("#app"));
layout.showIn("#content", foo);
//
// But this way works fine (rendering directly to a DOM element) (just // one 'show' event fires)
//foo.render('#app');
</script>

我希望“显示”事件触发一次,因为它只显示一次:)

标签: kendo-ui

解决方案


这似乎是最新的 2019 R2 剑道版本 (2019.2.514) 中引入的错误。将您的示例切换为使用之前的 2019 R1 SP1 (2019.1.220) 版本会导致它按预期运行https://dojo.telerik.com/AkOwiMAZ/5

Telerik 通常在每个季度发布大约一个月后发布一个服务包;我们已经向他们提出了错误报告,因此它有可能在 2019 R2 SP1 中得到修复。否则,我想你最好的选择是暂时坚持使用 2019.1.220。希望这可以帮助。

编辑:确认已在 2019 R3 (2019.3.917) 版本中修复。


推荐阅读