2017-04-17 3 views
0

In meiner Ember-App habe ich eine Eigenschaft, die ich innerhalb der init()-Methode einer übergeordneten Komponente erstelle. Ich möchte das an Kinder weitergeben.Ember Pass-Eigenschaft, die in der übergeordneten Komponente zu untergeordneten Komponenten erstellt wird

// 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}} 

Ich weiß, dass ich den {{with}} Helfer ein ParentProperty erstellen können, wickeln Sie das Eltern und Kind, und übergeben es an beide nach unten, aber das ist nicht das, was ich tun möchte. Ist das möglich?

+0

Diese Vorlage ist Ihre Routenvorlage, nicht Ihre Elternkomponente Vorlage, richtig? Und Sie können nicht von außen auf eine Eigenschaft einer Komponente zugreifen. Sie können es jedoch an den 'yield'-Helfer übergeben, um es anzuzeigen. – Lux

+0

Richtig, das ist die Routenvorlage. Ich habe die Frage bearbeitet. Wie würde ich es vom Yield-Helfer aussetzen? – CookieMonster

Antwort

1

Wie @Lux vorgeschlagen hat, könnte ich dies mit dem Yield-Helfer erreichen.

// 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}} 
Verwandte Themen