我需要知道iframe何时加载了它的内容,并且我试图坚持Ember的做事方式。
<iframe src="" {{action "onLoad" on="load"}}></iframe>
看起来非常简单明了,但这个动作永远不会被调用。有谁知道我可能做错了什么?或者也许是检测这类事情的更好方法?
答案 0 :(得分:1)
更新
创建名为my-component的组件,在my-component.hbs
中<iframe src="" onload={{action "onLoading"}}></iframe>
my-component.js中的
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
onLoading() {
console.log('OnLoad');
}
}
});
即使它不在组件中也是如此。
您可以在此处找到支持的事件列表。https://guides.emberjs.com/v2.10.0/components/handling-events/#toc_event-names
但是没有提到load
。所以我怀疑你需要提到自定义事件。
您可以尝试在onload
文件
app.js
事件
App = Ember.Application.extend({
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix,
Resolver,
customEvents:{
load:'load'
}
});
答案 1 :(得分:0)
这不是很好,但这可以解决任何更好的解决方案。
import Ember from 'ember'
export default Ember.Route.extend({
activate() {
Ember.run.schedule('render', () => {
Ember.$('iframe').one('load', () => { this.send('onLoad') })
})
}
})
每次输入路线后,在路径模板完成渲染后运行。它从iframe捕获load事件并手动触发动作让Ember接管。不完美,但也不是很糟糕。