面对使用ember-light-table

时间:2017-12-21 06:09:53

标签: ember.js ember-cli

我正在学习ember js,我遇到了ember-light-table作为数据表的替代品。

我只想在表格中显示一些静态数据。因此,我不是创建mixin和组件,而是将代码直接写入路径文件。 (不确定事情是否会以这种方式发挥作用)。

以下是我的路线档案

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":"abc@gmail.email",
      "name":"Abc"
    }, {
        "email":"xyz@gmail.email",
        "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}}

我在控制台中遇到错误:

  

错误:断言失败:[ember-light-table]表必须是表的实例

我也见过文档代码和其他博客,代码似乎相同,但不确定我是否遗漏了某些内容。

提前致谢。

1 个答案:

答案 0 :(得分:1)

不要在路由器中执行此操作,而是创建一个组件 现在你的路由器也有问题,因为路由器中没有init挂钩,但你想在组件中使用init挂钩。
将所有路由器代码放在组件中,除了导入路由器和扩展路由器当然以及组件模板中的模板。在您现在使用的模板中,调用您的组件,这应该可以解决问题