我试图理解ember和ember cli约定和文件结构

时间:2015-10-07 14:30:38

标签: ember.js ember-cli

我已经使用ember cli设置了一个简单的api和一个新的ember应用程序

然而,虽然我可以获得一个完整的“项目”列表,但我无法使用params获得单个项目。

我的文件设置如下:

/models
  item.js
/routes
  /items
    index.js
    show.js
/templates
  /items
    index.hbs
    show.hbs
  application.hbs
  index.hbs
  items.hbs
router.js

供参考,这是我在文件中的内容

我设置了 models / item.js a:

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string')
});

我将代码添加到 router.js

import Ember from 'ember';
import config from './config/environment';

var Router = Ember.Router.extend({
  location: config.locationType
});

Router.map(function() {
  this.route('items', function() {
    this.route('show', { path: '/:item_id' });
  });
});

export default Router;

然后我创建了 templates / index.hbs

{{outlet}}

最后,添加了我的 templates / items / index.hbs

<ul>
  {{#each model as |item|}}
      <li>
      {{#link-to 'items.show' item}}
        {{item.name}}
      {{/link-to}}
      </li>
  {{/each}}
</ul>

这可以按预期工作。

但是,当我单击链接(/ items / 1)时,它不再按预期执行。假设我没有使用任何把手变量({{item.name}}),它会正确显示items / show.hbs。例如,如果我只包含文本,this is my items/show.hbs它将显示文本。当我加入时,{{name}}会显示空白页

这是我的 templates / items / show.hbs

{{name}}

和我的 routes / items / show.js

import Ember from 'ember';

export default Ember.Route.extend({
  model(params) {
    return this.store.queryRecord('item', params.item_id);
  }
});

我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分:1)

在模板

中使用模型时,您似乎没有使用模型参考

这是我的templates / items / show.hbs

{{name}} < This is a model's property- name 
Correct usage: {{model.name}}

和我的路线/ items / show.js

import Ember from 'ember';

export default Ember.Route.extend({
  model(params) {
    return this.store.queryRecord('item', params.item_id);
  }
});

使用哈希的方式

            return Ember.RSVP.hash({
                something: store.find('y', { study: params.study_id }),
                somethingElse: store.find('x', 1),

            });