EmberJs的输入onkeypress事件未发送到组件
EmberJs input onkeypress event not sent to component
我使用的是EmberJS,我希望当用户在我的搜索栏中键入一个键时,会向我的组件发送一个操作。我读过(http://emberjs.com/api/classes/Ember.TextSupport.html#property_onEvent)我应该把onEvent="keyPress">放在我的输入中,但它不起作用。目前,如果我键入一些文本,search()
方法不会被调用,但如果我按enter键,就会被调用。
这是我的模板:
<div id="command-manager">
{{input type="search" action="search" onEvent="keyPress" placeholder="Enter a command here" maxlength="32"}}
</div>
这是我的组件:
var CommandManagerComponent = Ember.Component.extend({
actions:{
search:function() {
console.log('search');
}
}
});
正如你所看到的,这很简单,我不知道我做错了什么。
http://emberjs.com/guides/components/sending-actions-from-components-to-your-application/
通常,您应该将组件操作视为转换基元事件(如鼠标单击或元素暂停事件(转换为在应用程序中具有语义意义的动作。
否则,请使用视图进行UI转换/效果。
现在,要对组件使用操作,您需要使用sendAction()
。
示例:http://emberjs.jsbin.com/wofom/1/edit
我遇到了完全相同的问题。组件与视图的关系可能很棘手。
我发现扩展助手是最快的方法。试试这个:
var CommandManager = Ember.TextField.extend({
keyUp: function ( event ) {
// targetObject is the active view controller
// this function will look for the search action
// on your controller
this.get('targetObject').send('search');
}
});
Ember.Handlebars.helper('command-manager', CommandManager);
你可以在你的模板中这样称呼它:
<div id="command-manager">
{{command-manager placeholder="Enter a command here" maxlength="32"}}
</div>
票据
- 这将输入标准文本输入,而不是搜索输入,是好吗
- 我假设你正在使用控制器,如果你没有,那么就删除
this.get('targetObject').send('search');
部分并运行CCD_ 4函数中的代码
我希望这能有所帮助。祝你好运
相关文章:
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 单元测试:使用酶模拟父组件中子组件的点击事件
- React/flux - 子组件用户事件 - 是否应通过调度程序路由所有内容
- React:如何侦听子组件事件
- 将事件绑定到其他UI组件's函数,在Kendo MVVM中
- 如何更新angular2中组件之间的事件数据
- 点击tpl链接时,ExtJS 4.2自定义组件触发事件
- 反应:在嵌套组件上冒泡点击事件
- 如何根据其他组件中的事件更新组件URL
- 使用Ember中的组件生命周期事件
- 如何将事件绑定到模式对话框上的组件
- 将事件处理程序推送到父组件
- React,在组件事件上呈现消息的最佳方法
- 如何确定Twitter引导组件事件的来源
- 取消ExtJS组件事件
- Ember:嵌套组件事件冒泡
- 获取飞行组件事件的委托目标
- EmberJS嵌套组件事件
- Angular js文本Angular组件事件上键
- ExtJS“创建”或“初始化”组件事件侦听器