HTML代码,它在级别选择事件上调用函数。这段代码是用Ember框架编写的。
{{ action "onLevelSelect" this on="change" target= "view"}}
通过触发此事件调用的Javascript函数:
onLevelSelect : function(event) {
var getSelectedLevel = event.target.selectedOptions[0].label; // error line
/*rest of the code goes below*/
}
说到“错误行”,我收到此错误。
"ReferenceError: event is not defined".
我试过了window.event和event.which,我也尝试将事件显式发送到函数"onLevelSelect"
。
答案 0 :(得分:2)
我解决了这个问题,但忘了更新。 解决方案是
Firefox不支持使用ember handlebar语法来处理Click
,Change
等事件。但它可以在Chrome中使用。所以,我使用jQuery函数来处理这些事件,如click(event){}
,change(event){}
等(我们也可以使用像onClick()
,onChange()
这样的HTML函数。
答案 1 :(得分:0)
这种行为是正确的。 如果使用操作助手,Ember不会传递事件对象。您能否显示更多的视图和模板代码?你想要完成什么?
答案 2 :(得分:0)
我遇到了同样的问题,我在把手中使用onclick={{action ...}}
而不仅仅是{{action ...}}
来解决这个问题。我也在其他地方看过这个问题。使用动作助手本身并不传递事件对象。但是使用onclick可以。
所以基本上将代码更改为:
onclick={{ action "onLevelSelect" this on="change" target= "view"}}
答案 3 :(得分:0)
在firefox中,在onclick函数回调中无法访问全局window.event
。所以你不应该依赖于此。
<input {{action 'onLevelSelect'}} value="test" />
- 此处您不会在event
方法中收到onLevelSelect
个对象。
但在下面,您将收到event
个对象作为最后一个参数
<input onchnage={{action 'onLevelSelect'}} value="test" />
我在this answer详细解释