2016-06-15 13 views
6

Gibt es eine Möglichkeit, innerhalb der Komponente JS-Datei den inneren Inhalt der Komponenteninitialisierung zuzugreifen. Ich möchte im Wesentlichen Zugang zu Rendite haben.EmberJS: Zugriff auf Komponente html aus der Komponente js

Zum Beispiel lassen Sie uns sagen, dass ich eine hbs mit dieser Vorlage haben:

{{#my-component}} 
    <span>bla bla {{foo}}</span> 
{{/my-component}} 

Dann möchte ich in meiner Komponente über diese Spanne für den Zugriff wie im Beispiel unten, wo in der theInnerHtml ich will, was innerhalb der initialisierten Komponente.

import Ember from 'ember'; 

export default Ember.Component.extend({ 

    didInsertElement() { 
    let theInnerHtml = this.get('innerHTML'); // "<span>bla bla {{foo}}</span>" 
    } 
}); 
+0

Können Sie Code angeben, wo Sie eigentlich möchten? Beispielbeispiel –

+0

'this. $(). html()', nicht, dass ich es empfehlen würde, was ist Ihr Anwendungsfall? Warum brauchst du Zugang dazu? –

+0

@Kitler Das bringt mir den Inhalt meiner Komponentenvorlage zurück. Nicht das, was innerhalb des Körpers der Komponente war, als sie initialisiert wurde. Wir versuchen, das Kendoui-Widget in unserer Anwendung zu verwenden und an manchen Stellen müssen wir es als Vorlage für das Widget verwenden. – valanto

Antwort

3

Sie können jQuery, die bereits in Ember gebaut wird, ein jQuery-Objekt für das Element Sie suchen zu bekommen,

import Ember from 'ember'; 

export default Ember.Component.extend({ 

    didInsertElement() { 
    let theInnerHtml = this.$('span').html(); 
    } 
}); 

oder Sie können nur Eigenschaft Ember Komponente des Elements verwenden: http://emberjs.com/api/classes/Ember.Component.html#property_element

import Ember from 'ember'; 

export default Ember.Component.extend({ 

    didInsertElement() { 
    let theInnerHtml = this.element; 
    } 
}); 
+0

Danke für die Antwort. Ich verwende keinen Ertrag in meiner Komponentenvorlage, also habe ich sie dort nicht. Gibt es eine Möglichkeit, es direkt in der Komponente js-Datei aufzunehmen? – valanto

+0

Ich benutze auch nie Rendite in meiner - aber ich benutze immer noch diese, wenn ich auf das DOM der Komponente zugreifen muss. – ConorLuddy

+0

Das gibt das Dom der Komponente zurück, wie Sie richtig erwähnen. Ich möchte die HTML in den Block, wenn es in meinem Beispiel initialisiert wurde " bla bla {{foo}}" – valanto

0

ein Weg, um dies zu realisieren wäre eine Art kendo-component Komponente zu machen, mit dem einzigen Zweck, die ke von Initialisierung NDO-Komponente.

Es hätte eine einfache {{yield}} für eine Vorlage, die uns erlaubt, den erhaltenen Inhalt über this.$().html(); abzuholen, was in Wirklichkeit die Vorlage ist, die an die Kendo-Komponente übergeben wird.

Verwandte Themen