2016-08-22 5 views
-2

ユーザtable.jsタグなし燃えさしコンポーネントのクラス名を割り当てる方法

export default Ember.Component.extend({ 
    tagName: '' 
}); 

ユーザtable.hbs

<table> 
    {{yield}} 
</table> 

使用

{{#users-table class="table table-bordered"}} 
    {{#table-head}} 
     {{#table-row}} 
      {{table-head-cell}} 
      {{table-head-cell}} 
     {{/table-row}} 
    {{/table-head}} 
    {{#table-body}} 
     {{#each users as |user|}} 
      {{#table-row}} 
       {{table-body-cell cellValue=user.name}} 
       {{table-body-cell cellValue=user.age}} 
      {{/table-row}} 
     {{/each}} 
    {{/table-body}} 
    {{#table-foot}} 
     {{#table-row}} 
      {{table-head-cell}} 
      {{table-head-cell}} 
     {{/table-row}} 
    {{/table-foot}} 
{{/users-table}} 

というのは、コンポーネントのtagNameが空(tagName: '')であること、そのルート要素のクラス名を渡す方法を説明したからです。何か別のものがあります

+3

なぜあなたは '{{users-table class =" table "tagName = 'table'}}' ..あなたを抱きしめているのですか? – kumkanillam

+0

この場合、テンプレートファイルは{{yield}}のままになります。コードは良く見えません –

+0

あなたのケースでは '{{yield}}'を保持する必要はありません。あなたが 'tagName = '''を使用するのを覚えておいてください。 '$' – kumkanillam

答えて

1

タグレスコンポーネントは、名前のとおり、タグを持たないため、クラスをスティックすることはできません。また、ハンドラを登録する要素がないため、イベントハンドラもありません。エンバー機能をより有効に活用するように見えること

// user-table.js 
export default Ember.Component.extend({ 
    tagName: 'table' 
}); 

// user-table.hbs 
{{yield}} 

コメントで提案、良い軌道に乗っているtagName="table"を使用して、コンポーネントのテンプレートでのみ{{yield}}を持っています代替案よりも。

0

あなたはそうのようなタグなしのコンポーネント(Ember Twiddle)にクラス名を渡すことができます:タグなしのコンポーネントの良いところは、それがコンポーネントのトップレベルの要素は、あなたが何であるかをテンプレートから明らかであるということである

// user-table.js 
export default Ember.Component.extend({ 
    tagName: '' 
}); 

// user-table.hbs 
<table class="{{class}}"> 
    {{yield}} 
</table> 

// usage 
{{#users-table class="table table-bordered"}}...{{/users-table}} 

javascriptファイルを参照する必要はありません。

関連する問題