2017-04-17 83 views
0

在我的Ember应用程序中,我有一个属性,我在父组件的init()方法内创建了一个属性。我想把它传递给孩子。Ember将在父组件内创建的属性传递给子组件

// app/component/parent.js 
import Ember from 'ember'; 
import ParentProperty from 'somewhere'; 

export default Ember.Component.extend({ 
    init() { 
     this._super(...arguments); 
     let model = this.get('model'); 
     let moreData = this.get('moreData'); 
     this.parentProperty = new ParentProperty(model, moreData); 
    } 

    click(e) { 
     this.get('moreData').doSomthing(); 
    } 
}); 

// app/component/application.hbs 
{{#parent model=model moreData=moreData}} 
    // Here, I want to pass the `parentProperty` created 
    // in the init of the parent component. 
    {{child parentProperty=parent.parentProperty}} 
{{/parent}} 

我知道我可以使用{{with}}助手创建ParentProperty,包裹父母和孩子,并把它传递到他们两个,但是这不是我想做的事情。这可能吗?

+0

此模板是您的路线模板,而不是您的父母组件模板,对吗?而且你无法从外部访问组件的属性。但是,您可以将它传递给'yield'助手来公开它。 – Lux

+0

对,就是路线模板。我编辑了这个问题。我将如何从收益帮手中揭露它? – CookieMonster

回答

1

正如@Lux建议的那样,我可以使用yield helper来实现这一点。

// app/component/parent.js 
import Ember from 'ember'; 
import ParentProperty from 'somewhere'; 

export default Ember.Component.extend({ 
    init() { 
     this._super(...arguments); 
     let model = this.get('model'); 
     let moreData = this.get('moreData'); 
     this.parentProperty = new ParentProperty(model, moreData); 
    } 

    click(e) { 
     this.get('moreData').doSomthing(); 
    } 
}); 

// app/component/parent.hbs 
{{yield parentProperty}} 

// app/component/application.hbs 
{{#parent model=model moreData=moreData as |parentProperty|}} 
    {{child parentProperty=parentProperty}} 
{{/parent}} 
相关问题