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>