【问题标题】:Design models in EmberJS在 EmberJS 中设计模型
【发布时间】:2015-07-31 08:12:00
【问题描述】:

我在 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 数据的替代品或更改模型的设计?

我的目标是尽可能以“ember 方式”构建可运行的应用程序。

附:我正在使用 EmberJS 的最新版本。

编辑:

用例,一般来说,接下来: 我有构建器路线和模板。在此页面上,用户可以选择一些选项、类型和成分(从 model.ingredients 中提供的所有成分列表中)。用户点击“提交”后,选择的选项/类型/成分将被放入“搜索”请求中。

【问题讨论】:

  • 你为什么不尝试它会起作用而不是询问?我们对您的后端的了解为 0。
  • 我是 Ember 的新手,对典型解决方案了解不多。如果存在正常的方式,我不想“发明”我自己的自行车。我的后端 - RESTful API。但除了资源(如成分)之外,它还有带有参数的“seacrh”端点。

标签: ember.js architecture ember-data


【解决方案1】:

假设您的后端的响应是正确的。

要在 Ember.Data.Model 中定义 hasMany 关系,请使用 DS.hasMany。您使用计算属性设置它的方式将导致以下行为:

  • 每个构建器都将拥有您在应用程序中定义的所有成分。

  • 它将是一个不可变的属性。

我会像这样改变你的模型:

-建造者模型

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

-成分模型

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

【讨论】:

  • 在这种情况下,“成分”属性会自动从商店中抓取所有成分吗?
  • 这是你想要的行为吗?这将需要一个 id 数组,用于从商店或服务器获取数据
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
相关资源
最近更新 更多