我正在使用EmberJS,我希望当用户在我的搜索栏中键入一个键时,会将一个操作发送到我的组件。我已阅读(http://emberjs.com/api/classes/Ember.TextSupport.html#property_onEvent)我应该将 onEvent =“keyPress”放入我的输入中,但它不起作用。目前,如果我输入一些文本,则不会调用search()
方法,但是如果我按下回车键。
这是我的模板:
<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');
}
}
});
正如你所看到的,这很简单,我不知道我做错了什么。
答案 0 :(得分:1)
http://emberjs.com/guides/components/sending-actions-from-components-to-your-application/
通常,您应该将组件操作视为翻译 原始事件(如鼠标单击或元素暂停 event)在你的应用程序中具有语义含义的动作。
否则使用视图,用于UI过渡/效果。
现在,要对您的组件使用操作,您需要使用sendAction()
。
答案 1 :(得分:1)
我有完全相同的问题。组件与视图的关系可能很棘手。
我发现扩展助手是最快捷的方法。试试这个:
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');
部分并运行你的
keyUp
函数中的代码。我希望有所帮助。祝你好运!