Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 在Ember输入帮助程序中调用操作_Ember.js_Handlebars.js - Fatal编程技术网

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() {
      // ...
    },
  }