2017-12-21 8 views
2

私はember jsを学習しており、データテーブルの代わりにember-light-tableを使用しました。ember-light-tableを使用する際の問題点

静的なデータをテーブルに表示したいだけです。したがって、ミックスインとコンポーネントを作成する代わりに、コードをルートファイルに直接書き込んでいます。 (確かに、このように動作するかどうかはわかりません)。

Error: Assertion Failed: [ember-light-table] table must be an instance of Table

私もドキュメントや他のブログのコードを見てきました。以下は

は、私は、コンソールにエラーの下に取得しています私のルートファイル

import Route from '@ember/routing/route'; 
import Table from 'ember-light-table'; 
import { computed } from '@ember/object'; 

export default Route.extend({ 
    table : null, 
    columns: computed(function() { 
    return [{ 
     label: 'Email', 
     valuePath: 'email' 
    }, { 
     label: 'Name', 
     valuePath: 'name' 
    }]; 
    }), 

    rows: computed(function() { 
    return [{ 
     "email":"[email protected]", 
     "name":"Abc" 
    }, { 
     "email":"[email protected]", 
     "name":"Xyz" 
    }]; 
    }), 

    init(){ 
    this._super(...arguments); 
    let table = new Table(this.get('columns'),this.get('rows')); 
    console.log("table = ",table); 
    this.set('table', table); 
    } 
}); 

テンプレートファイル

{{#light-table table height='65vh' as |t|}} 
    {{t.head fixed=true }} 

    {{#t.body canSelect=false as |body| }} 
    {{/t.body}} 
{{/light-table}} 

ですコードは同じではないようですが、わかりません。

ありがとうございます。

答えて

1

ルータでこれを行うのではなく、コンポーネントを作成してください。
ルータにはinitフックがありませんが、コンポーネントでinitフックを使いたいので、あなたのルータにも問題があります。
インポートルータとエクステンデッドルータを除くコンポーネントのすべてのルータコードと、コンポーネントテンプレートのテンプレートを入れます。現在使用しているテンプレートでは、コンポーネントに電話をかけて問題を解決する必要があります。

+0

私に正しい方法を教えてくれてありがとう。私はこれのためのコンポーネントを作成しようとします。 :) –

関連する問題