我在EmberJS中遇到了建筑问题。 我已经有了后端,我需要实现前端部分。 所以,我有"建设者"路线:
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.createRecord('builder');
}
});
构建器模型:
import DS from 'ember-data';
export default DS.Model.extend({
cocktailsTypes: DS.attr(), //must be array
cocktailsOptions: DS.attr(), //must be array
selectedIngredients: DS.attr(), //must be array
ingredients: Ember.computed({
get() {
return this.store.findAll('ingredient');
}
})
});
"成分"模型:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
vol: DS.attr('number'),
description: DS.attr('string'),
category: DS.attr('string')
});
我想在" builder"中添加一些动作。创建自定义请求并从" builder"发送数据的路由模型。
会起作用吗?在EmberJS和ember数据中它是正确的方式吗?也许我需要使用一些替代的余烬数据或改变模型的设计?
我的目标是在" ember方式中构建工作应用程序"尽可能最好。
P.S。我使用的是EmberJS的最新版本。
修改
用例,一般来说,下一篇: 我有建设者路线和模板。在此页面上,用户可以选择一些选项,类型和成分(来自model.ingredients中显示的所有成分列表)。在该用户点击"提交"和选定的选项/类型/成分将被放入"搜索"请求。
答案 0 :(得分:0)
假设后端的响应是正确的。
要在Ember.Data.Model中定义hasMany关系,请使用DS.hasMany。使用计算属性设置它的方式将导致以下行为:
每个构建器都将包含您在应用程序中定义的所有成分。
这将是一个不可变的属性。
我会改变你的模特:
-Builder模型
import DS from 'ember-data';
export default DS.Model.extend({
cocktailsTypes: DS.attr(), //must be array
cocktailsOptions: DS.attr(), //must be array
selectedIngredients: DS.attr(), //must be array
ingredients: DS.hasMany('ingredient')
});
-Iredredient model
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
vol: DS.attr('number'),
description: DS.attr('string'),
category: DS.attr('string')
});