EmberJS中的设计模型

时间:2015-07-31 08:12:00

标签: ember.js architecture ember-data

我在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中显示的所有成分列表)。在该用户点击"提交"和选定的选项/类型/成分将被放入"搜索"请求。

1 个答案:

答案 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')
});