Ember.js 在Ember输入帮助程序中调用操作
我有这个输入字段Ember.js 在Ember输入帮助程序中调用操作,ember.js,handlebars.js,Ember.js,Handlebars.js,我有这个输入字段 {{input {{action 'test2' on="keyDown" allowedKeys="any"}} }} 我无法阻止这一行动。当我们有这样的事情时,有没有一种方法可以调用一个动作?不,不可能这样做。当您试图绑定“keyDown”事件时。您不能通过观察文本框值来实现相同的功能吗。我在这里给出了示例代码 模板: {{input value=myValue}} 控制器: myValueDidChange : function() { // Code
{{input {{action 'test2' on="keyDown" allowedKeys="any"}} }}
我无法阻止这一行动。当我们有这样的事情时,有没有一种方法可以调用一个动作?不,不可能这样做。当您试图绑定“keyDown”事件时。您不能通过观察文本框值来实现相同的功能吗。我在这里给出了示例代码 模板:
{{input value=myValue}}
控制器:
myValueDidChange : function() {
// Code here
}.observes('myValue')
另一种选择是,如果您在多个位置需要此功能,则创建一个组件。在这一点上,你确实可以抓住按键。例如,如果您想要一个数字框,可以执行以下操作:
<script type="text/x-handlebars" data-template-name="components/numeric-input">
{{input type='number' value=val classNames='text-align-right'}}
</script>
最后,您可以使用以下方法调用它:
{{numeric-input val=productCount}}
一种解决方案是在控制器中注册一个操作,并通过事件从输入助手调用它 控制器中的操作
App.ApplicationController = Ember.Controller.extend({
//Attribute as a component for your template
search: '',
actions: {
query: function() {
console.log('ApplicationController > query')
var query = this.get('search');
console.log('> ' + query);
//do something ...
// this.transitionToRoute('search', { query: query });
}
}
});
具有按键事件的输入帮助程序:
在每个按键事件上从应用程序控制器调用操作查询
{{input type="text" class="form-control" placeholder="Query" value=search key-press="query"}}
以下是事件列表:现在,你可以写:
{{input value=myValue action="test2" on="key-down"}}
有关更多信息,请参阅:信用卡转到:
及
以及其他任何事件
编辑:使用Ember 3.1测试如何读取
myValueDidChange
函数中输入的值?Marco-我认为设计应该将输入绑定到控制器的另一个成员。例如:{input value=myValue}}在模板中,它将输入绑定到控制器中的myValue。然后,在myValueDidChange函数中,您可以读取myValue的最新值。是否可以将参数传递给操作?@jgomo3:我不知道。但是您可以从控制器中获取值。例如,此示例:this.controller.get('myValue')
。
{{input value=myValue action="test2" on="key-down"}}
{{input value=myValue focus-in="focus" key-down="keydown"}}
export default Controller.extend({
// ...
actions: {
focus() {
// ...
},
keydown() {
// ...
},
}