首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ember- DS.attr的动态数据编号

ember- DS.attr的动态数据编号
EN

Stack Overflow用户
提问于 2012-11-13 22:10:22
回答 1查看 1K关注 0票数 2

所以我有一个ember-data模型,我希望我的用户能够为每个项目创建不同的/更多的DS.attr,并随心所欲地叫它们。这将把json发送到rails服务器,我在那里使用mondodb。然后,我可以检查key是否已定义,如果没有,则为该文档创建它,并将其保存在mongo中。

问题是,在扩展DS.attr时,你必须硬编码所有的DS.Model,但我当时并不完全了解它们。

有没有办法重新打开DS.Model并以某种方式循环传递的json键(或者我可以将allKeys字段中的所有键从rails传递给客户机?)。

那么,当有人想要创建不同的属性时,我可以动态地重新打开模型并添加这个DS.attr吗?

有没有人知道怎么做或者这是否可能??

任何帮助,例子或想法都会很棒!

谢谢你,瑞克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-13 22:49:37

假设您有一个App.Post模型,并且希望您的用户存储帖子的附加属性。首先创建一个模型App.MyModelTypes,并将您所有的modelTypes存储在其中:

代码语言:javascript
复制
App.MyModelTypes = DS.Model.extend({
  modelType: DS.attr('string') // e.g. App.Post, App.Comment
  attributes: DS.hasMany('App.Attribute')
});

那么你的App.Post应该是这样的:

代码语言:javascript
复制
App.Post = DS.Model.extend({
  title: DS.attr('string'),
  body: DS.attr('string'),
  // ... other base attributes
});

按如下方式定义模型App.Attribute

代码语言:javascript
复制
App.Attribute = DS.Model.extend({
  name: DS.attr('string')
  attrType: DS.attr('string'),

  theModelType: DS.belongsTo('App.Model'),
  attributeValues: DS.hasMany('App.AttributeValue')
});

当用户为post创建新属性时,应用程序应该创建一个属于App.MyModelType App.Post的新App.Attribute

最后,您需要一个模型来存储帖子的自定义属性值:

代码语言:javascript
复制
App.AttributeValue = DS.Model.extend({
  theModelType: DS.belongsTo('App.MyModelTypes'),
  targetId: DS.attr('number'),
  attribute: DS.belongsTo('App.Attribute'),
  value: DS.attr('string') // attribute.attrType will give us the type 
});

当用户编辑某个帖子的属性值时,您将post.id存储在targetId中,在theModelType中存储App.Post,依此类推。

如果这对你有效,请让我知道。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13362214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档