gpt4 book ai didi

ember.js - 新记录的 Ember 克隆模型

转载 作者:行者123 更新时间:2023-12-03 20:54:21 25 4
gpt4 key购买 nike

我想克隆当前正在编辑的模型。

我找到了几种几乎有效的方法。但两者都不是完美的。

1) model.get('data.attributes')获取除驼峰格式关系之外的所有属性,生成一个新记录,但当然缺少关系。

2) model.serialize()生成一个 JSON 对象,具有包括关系在内的所有属性。但是createRecord由于对象不是驼峰式格式,因此无法很好地处理它(带有下划线的属性,如 first_name 将不会被处理)

创建克隆后,我想 transaction.createRecord(App.Document, myNewModelObject)更改/设置几个属性,最后 commit() .任何人都对如何做到这一点有一些见解?

最佳答案

现在我们有一个附加组件来复制模型
ember-cli-copyable

有了这个插件,只需添加 Copyable混入要复制的目标模型并使用复制方法

来自附加站点的示例

import Copyable from 'ember-cli-copyable';

Account = DS.Model.extend( Copyable, {
name: DS.attr('string'),
playlists: DS.hasMany('playList'),
favoriteSong: DS.belongsTo('song')
});

PlayList = DS.Model.extend( Copyable, {
name: DS.attr('string'),
songs: DS.hasMany('song'),
});

//notice how Song does not extend Copyable
Song = DS.Model.extend({
name: DS.attr('string'),
artist: DS.belongsTo('artist'),
});
//now the model can be copied as below
this.get('currentAccount.id') // => 1
this.get('currentAccount.name') // => 'lazybensch'
this.get('currentAccount.playlists.length') // => 5
this.get('currentAccount.playlists.firstObject.id') // => 1
this.get('currentAccount.favoriteSong.id') // => 1

this.get('currentAccount').copy().then(function(copy) {

copy.get('id') // => 2 (differs from currentAccount)
copy.get('name') // => 'lazybensch'
copy.get('playlists.length') // => 5
copy.get('playlists.firstObject.id') // => 6 (differs from currentAccount)
copy.get('favoriteSong.id') // => 1 (the same object as in currentAccount.favoriteSong)

});

关于ember.js - 新记录的 Ember 克隆模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14912425/

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