Ember - JSON导入 - 不显示模板内容

时间:2017-07-05 20:39:14

标签: javascript json ember.js ember-cli

我正在使用Ember CLI。

我有这种格式的JSON:

公开/资产/ data.json

{
  "important": [
    {
      "name": "first",
      "value": 10
    },
    {
      "name": "second",
      "value": 10
    },
    ...
  ],
  "unimportant1": {
    ...
  },
  "unimportant2": {
    ...
  }
  ...
}

我想导入"important"以便在模型中使用。 我尝试了以下方法:

应用/路由/ important.js

import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return Ember.$.getJSON("/assets/data.json").important;
  }
});

控制台日志不会显示任何错误。

我想在"important"中显示这些项目。 我尝试了以下方法:

应用/模板/ important.hbs

{{#each model as |important|}}
  <div>
    {{important.name}}{{important.value}}
  </div>
{{/each}}

但是,没有显示任何内容。如何让它们显示?

我注意到,如果我将数组复制并粘贴到return语句中,则项目会按预期显示:

应用/路由/ important.js

import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return [
      {
        "name": "first",
        "value": 10
      },
      {
        "name": "second",
        "value": 10
      },
      ...
    ];
  }
});

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

Ember.$.getJSON("/assets/data.json");会返回一个承诺,但Ember.$.getJSON("/assets/data.json").important;不会返回承诺。它只是undefined

在模型钩子中,只需返回承诺:

model() {
  return Ember.$.getJSON("/assets/data.json");
}

然后在您的模板中,使用它:

{{#each model.important as |important|}}
  <div>
    {{important.name}}{{important.value}}
  </div>
{{/each}}