如何在emberJS pod结构中使用模型?

时间:2015-05-12 06:19:31

标签: ember.js ember-data asp.net-web-api ember-cli

我在ember中使用pods结构。我想创建一个dataservice和一个下拉组件。哪种方式最好? 我的结构基于ember-cli。

这些是我以前做的:

这是我的pods结构: enter image description here

dropdown / route.js中的代码:

import Ember from 'ember';

export default Ember.Route.extend({
   model: function() {
     var store = this.store;
     return  $.ajax({
        url: 'http://.../api/Category/Categories', //my api url
        type: 'get'
       }).then(function(items) {            
         items.forEach(function(item, index, enumerable) {
            store.push('model',{
                id:item.Id,
                name: item.Title,
                value: item.Id.toString()
            });
         });
      });
     }
  });
dropdown / model.js中的

代码:

import Ember from 'ember-data';

export default Ember.Model.extend({
    name: Ember.attr('string'),
    value: Ember.attr('string')   
});

在我的下拉页面中,我有这个错误:

  

错误:未找到'型号'

的型号

我该如何解决?

哪种方式更好?使用上面的方法或使用restadapter和序列化器? 如果第二种方式更好,请帮助我,我怎么能。感谢

3 个答案:

答案 0 :(得分:1)

这就是你的pods文件夹应该如何结束(组件示例):

  ├── app
  │  ├── pods
  │  │  └── components
  │  │     └── x-foo
  │  │     │  ├── component.js
  │  │     │  └── template.hbs
  │  │     └── x-bar
  │  │        ├── component.js
  │  │        └── template.hbs

(模型示例)

  ├── app
  │  ├── pods
  │  │  └── foo
  │  │     │  ├── controller.js
  │  │     │  ├── route.js
  │  │     │  └── template.hbs
  │  │  └── bar
  │  │     │  ├── controller.js
  │  │     │  ├── route.js
  │  │     │  └── template.hbs

详细了解" pod"结构here

答案 1 :(得分:0)

你的豆荚结构有点不对劲。 Pods结构用于包装应用程序中的资源。因此,ember-cli docs应该以资源方式拆分目录,其中每个目录可以包含三个文件:

  • controller.js
  • route.js
  • template.hbs

或者在组件的情况下:

  • component.js
  • template.hbs

我可以建议你:

  • 将您的模型移至models上方的pods目录(可能会更改名称,因为Model可能会导致某些奇怪的行为)
  • 将下拉组件留在
  • 我不确定,但如果您的dataservice是服务而不是组件,请将其移至services目录,pods
  • 以上

模型应该在models目录中定义,而不是在pods结构中定义。此外,您似乎正在使用余烬数据(使用store),但您可以通过扩展Ember.Model来创建模型。我不确定更恰当的方法是扩展DS.Model

答案 2 :(得分:0)

我改变了我的route.js:  store.push('model',...)store.push('dropdown',...) 它工作正常。