Javascript 简单的Ember.js输入语法
我在ember指南中看到了关于如何在Javascript 简单的Ember.js输入语法,javascript,ember.js,Javascript,Ember.js,我在ember指南中看到了关于如何在{{input}助手上执行操作语法的冲突。我指的是按键和向上键参数 显示它时不带括号,如下所示: {{input value=firstName key press=“updateFirstName”} 然而(对于名为“app/templates/components/list filter.hbs”的代码片段),它确实使用了括号: {{input value=value key up=(action'handleFilterEntry')class=“lig
{{input}
助手上执行操作语法的冲突。我指的是按键
和向上键
参数
显示它时不带括号,如下所示:
{{input value=firstName key press=“updateFirstName”}
然而(对于名为“app/templates/components/list filter.hbs”的代码片段),它确实使用了括号:
{{input value=value key up=(action'handleFilterEntry')class=“light”placeholder=“Filter By City”}
我不确定为什么API文档会省略括号,但示例将它们放在了括号中。当您使用以下格式时,
key up=(action'handleFilterEntry')
将调用handleFilterEntry
函数,并使用以下参数value
,jQueryEvent
同样地
key up='handleFilterEntry'
===>值,jQueryEvent
keyUp=(操作“handleFilterEntry”)
===>仅限于jQueryEvent
keyUp='handleFilterEntry'
===>不会触发事件-这是错误的。它类似于普通事件,因此需要提供函数而不是字符串
当被Dasherise化时,在input helper中,您将获得第一个参数值,然后是jQuery事件。如果没有破折号,那么这是正常的事情,因此您将单独获得jQuery事件参数
这证明了这种行为。我相当肯定,这是因为动作部分是隐含的,这是一个内置事件,所以不需要它;在第二个片段中它是无关的。你能解释一下你的意思吗:你将在争论中得到什么。你有任何例子或链接来更好地理解这一点。谢谢你,这更有意义。您能否解释一下
keyUp='handleFilterEntry'
在哪些方面可能起作用。{{input
帮助程序的设计方式是,它将响应中提到的所有事件,但事件名称必须是dasherize。但是对于正常的输入元素,您不需要dasherize事件名称。您可以像这样使用它
。在这种情况下,keyUp='handleFilterEntry'
事件名称keyUp
由浏览器管理,而不是由Ember,所以您需要分配函数而不是字符串。对于Ember管理的事件(keyUp
),您可以提到字符串/函数,但是对于普通DOM事件(keyUp
),您需要始终分配函数。这更有意义。我非常感谢。