2014-10-02 31 views
9

Chciałbym uzyskać identyfikator wygenerowany przez Ember elementu.Jak uzyskać identyfikator elementu generowanego przez Emberjs w kontrolerze

{{#each}} 
<div> 
<h1>{{MyComponent}}</h1> 
</div> 
{{/each}} 

które czynią coś takiego:

<div id="ember180" class="ember-view"> 
<h1>My Component here</h1> 
</div> 

Potrzebuję uzyskać identyfikator każdego elementu div wewnątrz kontrolera. Jeśli muszę użyć niestandardowego identyfikatora, to w jaki sposób mogę utworzyć niestandardowy identyfikator za pomocą widoku ember.

Jak zidentyfikować każdy element div za pomocą jego identyfikatora wewnątrz kontrolera?

Odpowiedz

13

Nie jestem pewien co masz na myśli, ale mogę odpowiedzieć:

i jak mogę zidentyfikować każdy element div przez jego id wewnątrz kontrolera?

Working Example Spójrz na console.log zobaczyć identyfikator elementu, a następnie korzystać z Google Chrome lub Firebug do wglądu element składowy, aby zobaczyć, że id jest taka sama.

App.ItemOneComponent = Ember.Component.extend({ 
    didInsertElement: function(){ 
    console.log('element id: ' + this.elementId); 
    } 
}); 

this wewnątrz komponentu jest składnikiem, a elementId dostaje id div (lub inny znacznik jeśli używasz tagName wewnątrz komponentu).

Jeśli chcesz wybrać komponent z JQuery, użyj: this.$() wewnątrz komponentu.

Teraz tutaj nie wiem, czego potrzebujesz, więc zamierzam podać kilka sugestii. Jeśli potrzebujesz znać identyfikatory każdego komponentu z kontrolera, poleciłbym przekazanie tablicy zawierającej kontroler do komponentu. W swoim didInsertElement dodaj do tablicy obiekt elementId lub jQuery. Here is what I mean

App.IndexController = Ember.ArrayController.extend({ 
    componentIds: [] 
}); 

App.ItemOneComponent = Ember.Component.extend({ 
    didInsertElement: function(){ 
    this.get('array').pushObject(this.elementId); 
    } 
}); 

I komponent przechodzi obiektu: {{item-one array=controller.componentIds}}

Można również wysłać identyfikator komponentu lub jQuery obiektu poprzez działania z this.sendAction('actionName', componentId) i mają działanie zdefiniowane na kontrolerze, która pobiera jeden parametr (czyli ID_składnika lub obiekt jQuery.

3

można również radzić sobie z emberId zanim zostanie włożona do html.

App.ItemOneComponent = Ember.Component.extend({ 
    willInsertElement: function(){ 
     var emberId = this.get('elementId'); 
    } 
}); 
0

Możesz utworzyć niestandardowy identyfikator dla swojego komponentu, korzystając z elementId property.

Można utworzyć identyfikator poprzez wiązanie go do szablonu komponentu jak tak

{{my-component elementId="your-id-name"}} 

lub w pliku komponentu

export default Ember.Component.extend({ 
    elementId: 'your-id-name' 
});