Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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
Javascript 是否可以将函数传递给Ember.js组件以作为动作回调执行?_Javascript_Ember.js - Fatal编程技术网

Javascript 是否可以将函数传递给Ember.js组件以作为动作回调执行?

Javascript 是否可以将函数传递给Ember.js组件以作为动作回调执行?,javascript,ember.js,Javascript,Ember.js,我想知道是否可以将函数作为余烬组件的参数传递 // component.hbs {{component fun=fun}} 然后,从组件中的一个操作调用相同的函数: // component.js actions: { fun2() { let fun = this.get('fun'); fun(); } } 查看以下内容。你所要求的是有效的和有效的。但通常,您可以将函数传递给具有actionhelper的组件,并在actions定义中定义您的操作。我能说的是,

我想知道是否可以将函数作为余烬组件的参数传递

// component.hbs
{{component fun=fun}}
然后,从组件中的一个操作调用相同的函数:

// component.js
actions: {
  fun2() {
     let fun = this.get('fun');
     fun();
  }
}
查看以下内容。你所要求的是有效的和有效的。但通常,您可以将函数传递给具有
action
helper的组件,并在
actions
定义中定义您的操作。我能说的是,这是将函数传递给组件并从组件内部触发操作(调用函数)的常用方法

my-component.js application.js application.hbs
欢迎来到{{appName}


{{outlet}} {{my component foo=foo}}

my-component.hbs

是。你可以。你面临的困难是什么?。实际上,当我们使用闭包动作时,就会发生这种情况。基本上这就是闭包操作的工作原理。我这里的问题是,我需要扩展我的组件来实现这一点,你的答案很有用!我在这里遇到的问题是
this
foo
函数中处于未定义状态,因此我无法访问控制器中的任何内容,这使得回调几乎毫无用处。您确定要使用
action
helper吗?
import Ember from 'ember';

export default Ember.Component.extend({
  actions: {
    buttonClicked() {
      let foo = this.get('foo');
      foo();
    }
  }
});
import Ember from 'ember';

export default Ember.Controller.extend({
  appName: 'Ember Twiddle',

  foo() {
    alert('hi there');
  }
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
{{my-component foo=foo}}
<br>
<br>
<button onclick={{action 'buttonClicked'}}>Press</button>