【发布时间】:2014-06-26 20:47:59
【问题描述】:
我正在使用本地存储适配器。我有两个对象:一个流和一个参数,一个流hasMany 参数,同样还有一个参数belongsTo 一个流。我的代码中有一个函数可以复制另一个对象。当我从控制器调用该函数时,一切正常(参数的isSaving 位为假,isDirty 位也为假——所以看起来正在保存)。
但是,当我重新加载页面时,belongsTo 关系不会加载,尽管所有其他关系/属性都可以正常加载。
这是复制功能:
// elem is the Flow I'm duplicating, newFlowJSON is the JSON I'll use to create it.
function dupFlow(_store, newFlowJSON, elem) {
var newFlow = _store.createRecord('flow', newFlowJSON);
newFlow.save();
var newFlowParams;
newFlow.get('params').then(function(params) {
newFlowParams = params;
elem.get('params').then(function(p) {
var params = p.toArray();
for (var i=0; i < params.length; i++) {
var newParamJSON = params[i].toJSON();
delete newParamJSON.id;
delete newParamJSON.flow;
var newParam = _store.createRecord('param', newParamJSON);
newFlowParams.pushObject(newParam);
newParam.set('flow', newFlow);
newParam.save();
}
});
});
// couldn't figure out a good way to save the newFlow after all the params were pushed
setTimeout(function() {
newFlow.save();
}, 500);
}
我的简化模型:
App.Flow = DS.Model.extend({
title: DS.attr('string'),
params: DS.hasMany('param', {async: true})
});
App.Param = DS.Model.extend({
paramName: DS.attr('string'),
flow: DS.belongsTo('flow', {async: true})
});
【问题讨论】:
-
只是为了澄清。 - 假设您有一个带有两个参数对象 (
orgFlowParam1&orgFlowParam2) 的原始流 (orgFlow) - 当您从dupFlow和所有内容创建带有cloneFlowParam1和cloneFlowParam2的cloneFlow时看起来不错 - 你做了一个普通的旧 F5 刷新
标签: javascript ember.js local-storage ember-data