当我阅读https://docs.telerik.com/kendo-ui/AngularJS/introduction时,它似乎建议对于API中定义的任何事件,我可以使用k-on-前缀而不是k-前缀来设置事件,使其在摘要循环中运行:
通过k-on属性设置处理程序,还可以使用属性指定事件处理程序。它们需要
k-on-前缀。
…
kendoEvent变量是在作用域中定义的,您必须将它传递给事件处理程序。如果使用的是k-on-属性,则不需要在作用域上调用$digest(),因为绑定会处理它。
但是,当我尝试使用file-upload的select事件执行此操作时,我的处理程序从未运行:
<input name="files"
type="file"
kendo-upload
k-async="{ saveUrl: 'save', removeUrl: 'remove', autoUpload: true }"
k-on-select="onSelect"
/>如果我将其作为k-select传递,则我的处理程序确实会运行,但有时我对$scope所做的更改不会导致屏幕被更新。
我看得对吗?我该如何解决这个问题?
发布于 2019-01-10 19:03:48
实际上,k-on-select属性可以工作。但是,k-on-select将使用Scope#$eval并将其作为表达式执行。这是事件的AngularJS约定。由于我传递了一个解析为函数的表达式,所以每次计算k-on-select时都不会发生任何事情。
要在表达式中调用函数,必须使用函数调用语法«function»()。在kendo的AngularJS支持中,它在名为kendoEvent的变量中传递事件信息(而AngularJS中生成的事件则在名为$event的变量中传递该信息)。我的修正代码如下所示:
<input name="files"
type="file"
kendo-upload
k-async="{ saveUrl: 'save', removeUrl: 'remove', autoUpload: true }"
k-on-select="onSelect(kendoEvent)"
/>感谢https://stackoverflow.com/users/548997,他在https://stackoverflow.com/posts/comments/95071026中指出了这一点!
https://stackoverflow.com/questions/54118865
复制相似问题