gpt4 book ai didi

ember.js - 与mixin的多态关系

转载 作者:行者123 更新时间:2023-12-02 21:42:41 25 4
gpt4 key购买 nike

在 Ember-Data 中使用 hasManybelongsTo 关系时,是否必须指定一个类,或者我可以指定一个 mixin 吗?例如,我有一个 Attachment 模型,我想将其链接到其他一些模型。具体来说,我想将 Attachment 分配给 ProjectComponents。我可以在 ProjectsComponent 上使用 mixin 并将该 mixin 用作反函数,如下所示?

App.Attachment = DS.Model.extend({
attachedTo: DS.belongsTo('canHaveAttachments', { inverse: 'attachments'});
});

App.CanHaveAttachmentsMixin = DS.Mixin.create({});

App.Project = DS.Model.extend(App.CanHaveAttachmentsMixin, {
attachments: DS.hasMany('attachment', { inverse: 'attachedTo' });
});

这是 Ember 官方支持的吗?

最佳答案

在我们使用 Ember 2.4 的项目中,我们有几个实体:任务、分配和标签。任务可以通过多态关联可标记可分配

这是我们的模型结构:

// app/models/task.js
import DS from 'ember-data';
import Taggable from 'app/mixins/taggable';
import Assignable from 'app/mixins/assignable';

export default DS.Model.extend(Taggable, Assignable, {

});

// app/models/tag.js
import DS from 'ember-data';

export default DS.Model.extend({
taggable: DS.belongsTo('taggable', { polymorphic: true }),
});

// app/models/assignment.js
import DS from 'ember-data';

export default DS.Model.extend({
assignable: DS.belongsTo('assignable', { polymorphic: true }),
});


// app/mixins/taggable.js
import Ember from 'ember';
import DS from 'ember-data';

export default Ember.Mixin.create({
tag: DS.belongsTo('tag'), // you can go with hasMany here, we only have one-to-one association
});


// app/mixins/assignable.js
import Ember from 'ember';
import DS from 'ember-data';

export default Ember.Mixin.create({
assignment: DS.belongsTo('assignment'), // you can go with hasMany here, we only have one-to-one association
});

关于ember.js - 与mixin的多态关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21049626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com