Как получить Emberjs созданный элемент ID в контроллер
Я хотел бы получить идентификатор, сгенерированный Ember элемента.
{{#each}}
<div>
<h1>{{MyComponent}}</h1>
</div>
{{/each}}
, которые делают что-то вроде:
<div id="ember180" class="ember-view">
<h1>My Component here</h1>
</div>
мне нужно получить идентификатор каждого элемента div внутри контроллера. Если я должен использовать пользовательский идентификатор, как я могу создать пользовательский идентификатор с помощью ember view.
и как я могу идентифицировать каждый элемент div по его ID контроллера внутри?
3 ответов
я не совсем понимаю, что вы имеете в виду, но я могу ответить:
и как я могу идентифицировать каждый элемент div по его ID контроллера внутри?
Пример Работающего посмотрите на консоль.войдите, чтобы увидеть идентификатор элемента, а затем использовать Google Chrome или Firebug для проверки элемента компонента, чтобы увидеть, что идентификатор тот же.
App.ItemOneComponent = Ember.Component.extend({
didInsertElement: function(){
console.log('element id: ' + this.elementId);
}
});
this
внутри компонента находится компонент, а elementId получает id
div (или другой тег, если вы используете tagName
внутри компонента).
если вы хотите выбрать компонент с JQuery, используйте:this.$()
внутри компонента.
теперь вот где я не знаю, что вам нужно, поэтому я собираюсь выбросить несколько предложений. Если вам нужно знать идентификаторы каждого компонента от контроллера, я бы рекомендовал передать массив, сидящий на контроллере, компоненту. В didInsertElement
добавить elementId
или jQuery
объект матрица.вот что я имею в виду
App.IndexController = Ember.ArrayController.extend({
componentIds: []
});
App.ItemOneComponent = Ember.Component.extend({
didInsertElement: function(){
this.get('array').pushObject(this.elementId);
}
});
и ваш компонент передает в собственность: {{item-one array=controller.componentIds}}
вы также можете отправить код компонента или jQuery
объект через действие с this.sendAction('actionName', componentId)
и имеют действие, определенное на вашем контроллере, которое принимает один параметр (т. е. componentId или объект jQuery.
вы также можете иметь дело с emberId, прежде чем он будет вставлен в html.
App.ItemOneComponent = Ember.Component.extend({
willInsertElement: function(){
var emberId = this.get('elementId');
}
});
Вы можете создать пользовательский идентификатор для компонента с помощью свойство elementId.
вы можете создать идентификатор, привязав его к шаблону компонента, например
{{my-component elementId="your-id-name"}}
или в файле компонента
export default Ember.Component.extend({
elementId: 'your-id-name'
});