是否可以将功能传递给组件?我试图将我的代码从视图和组件中移开以保持我的Ember应用程序向前移动(请参阅here),并且我在我的网站中使用了一堆常用的函数。我不知道如何从组件中调用它们。我在旧代码中将它们放在自己的控制器中,但我听说将控制器传递给组件是不礼貌或不明智的。
例如,在组件手柄文件中,我考虑到这一点:
{{a-cool-component
property1=someValue
function1=controllers.utils.doSomethingRepetitious
}}
所以在我的组件javascript代码中我可以做这样的事情......
FacetListItemComponent = Ember['default'].Component.extend({
property1: null
property2: null
function1: null
didInsertElement: function() {
//... do stuff here
this.set('property2', this.function1(this.get('property1')));
}
);
exports['default'] = FacetListItemComponent;
我在构建的组件中尝试了它,但function1
遇到了 undefined 。
有什么建议吗?
我在Ember-CLI 0.2.7上使用Ember 1.11
布赖恩
答案 0 :(得分:1)
您应该使用get(),而不需要在组件上设置function1: null
。
//component
MyExComponent = Ember.Component.extend({
didInsertElement: function(){
var fun = this.get('function1');
fun()
}
})
//other component
MyOtherComponent = Ember.Component.extend({
function1: function(){
alert('hello');
}
})
//other component template
{{my-ex
function1=function1}}