我在ember中使用pods结构。我想创建一个dataservice和一个下拉组件。哪种方式最好? 我的结构基于ember-cli。
这些是我以前做的:
这是我的pods结构:
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和序列化器? 如果第二种方式更好,请帮助我,我怎么能。感谢
答案 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应该以资源方式拆分目录,其中每个目录可以包含三个文件:
或者在组件的情况下:
我可以建议你:
models
上方的pods
目录(可能会更改名称,因为Model
可能会导致某些奇怪的行为)dataservice
是服务而不是组件,请将其移至services
目录,pods
模型应该在models
目录中定义,而不是在pods结构中定义。此外,您似乎正在使用余烬数据(使用store
),但您可以通过扩展Ember.Model
来创建模型。我不确定更恰当的方法是扩展DS.Model
。
答案 2 :(得分:0)
我改变了我的route.js:
store.push('model',...)
到store.push('dropdown',...)
它工作正常。