Ember生成された要素のIDを取得したいと思います。
{{#each}}
<div>
<h1>{{MyComponent}}</h1>
</div>
{{/each}}
次のようなレンダリングを行います。
<div id="ember180" class="ember-view">
<h1>My Component here</h1>
</div>
コントローラ内の各div要素のIDを取得する必要があります。カスタムIDを使用する必要がある場合、ember view)を使用してカスタムIDを作成するにはどうすればよいですか。
また、コントローラー内のIDで各div要素を識別するにはどうすればよいですか?
あなたが何を意味するのか正確にはわかりませんが、私は答えることができます:
また、コントローラー内のIDで各div要素を識別するにはどうすればよいですか?
実例 console.logを見て要素IDを確認し、次にGoogle ChromeまたはFirebugを使用してコンポーネント要素を検査し、IDが同じであることを確認します。
_App.ItemOneComponent = Ember.Component.extend({
didInsertElement: function(){
console.log('element id: ' + this.elementId);
}
});
_
コンポーネント内のthis
はコンポーネントであり、elementIdはdivのid
(またはコンポーネント内でtagName
を使用する場合は別のタグ)を取得します。
JQueryでコンポーネントを選択する場合は、コンポーネント内でthis.$()
を使用します。
ここであなたが何を必要としているかわからないので、いくつかの提案を投げます。コントローラからすべてのコンポーネントのIDを知る必要がある場合は、コントローラ上にある配列をコンポーネントに渡すことをお勧めします。 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}}
_
this.sendAction('actionName', componentId)
を使用したアクションを介してコンポーネントのIDまたはjQuery
オブジェクトを送信し、1つのパラメーター(つまり、componentIdまたはjQueryオブジェクト)を受け取るアクションをコントローラーで定義することもできます。
EmberIdをhtmlに挿入する前に処理することもできます。
App.ItemOneComponent = Ember.Component.extend({
willInsertElement: function(){
var emberId = this.get('elementId');
}
});
elementIdプロパティ を使用して、コンポーネントのカスタムIDを作成できます。
次のようにコンポーネントテンプレートにバインドしてIDを作成できます。
{{my-component elementId="your-id-name"}}
またはコンポーネントファイル内
export default Ember.Component.extend({
elementId: 'your-id-name'
});