【问题标题】:How to handle multiple ember models for same resource如何处理同一资源的多个 ember 模型
【发布时间】:2019-03-20 02:16:05
【问题描述】:

我在app/models/user.js 中有一个模型user,具有以下内容:

import attr from 'ember-data/attr';
import Model from 'ember-data/model';

export default Model.extend({
  email:        attr('string'),
  username:     attr('string'),
  firstName:    attr('string'),
  lastName:     attr('string'),
  currency:     attr('string'),
  locale:       attr('string'),
  avatar:       attr('string')
});

我想在不同的路由中更新它的属性:

http://localhost:4200/account/profile我只想更新:

  • 名字
  • 姓氏
  • 头像
  • 用户名

http://localhost:4200/account/preferences我只想更新:

  • 语言环境
  • 货币

我正在使用 ember pod 结构,因此我想在这些路由中创建两个模型,使用自定义适配器和序列化程序来处理验证并仅序列化我想要的每个路由的属性。

- models
  - user.js
- pods
   - account
     - profile
       - adapter.js
       - controller.js
       - model.js
       - route.js
       - serializer.js
       - template.hbs
     - preferences
       - adapter.js
       - controller.js
       - model.js
       - route.js
       - serializer.js
       - template.hbs

但是这个解决方案在数据绑定方面存在问题,因为我没有更新 user 模型。

这样做的好方法是什么?

【问题讨论】:

  • 我看不出模型和渲染 UI 以更新模型的某些部分是如何相互关联的。当然,您应该确保验证不是在模型上进行,而是在路由/控制器或组件级别进行。
  • 如果您发现我的解决方案有帮助,请验证我的回答?谢谢

标签: ember.js ember-data


【解决方案1】:

您的应用中是否遵循一种混合结构(经典 + pod)?

如果你使用pod-based 布局,你可以销毁它

- models
  - user.js

并在您的 pod 的每个模型中都有相应的字段。说在

pods/account/profile/model.js

import attr from 'ember-data/attr';
import Model from 'ember-data/model';

export default Model.extend({
  email: attr('string'),
  username: attr('string'),
  firstName: attr('string'),
  lastName: attr('string'),
  avatar: attr('string')
});

pods/account/preferences/model.js

import attr from 'ember-data/attr';
import Model from 'ember-data/model';

export default Model.extend({
  currency: attr('string'),
  locale: attr('string')
});

【讨论】:

    猜你喜欢
    • 2021-12-23
    • 2021-09-20
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多