我正在使用没有外部数据存储的Ember v2.5.0。
使用createRecord方法在路由上创建记录后,无法在应用程序的其他部分(控制器或组件)中查询该记录。
我的理解是,我需要使用store.push在本地保存记录,以便控制器可以访问它。但是,store.push方法要求参数为json格式。
我可以取消模型,但是我想知道是否有使用Ember 2.5.0版将模型转换为json格式的快速方法?我还想知道我的使用store.push本地保留数据的假设是否是在没有外部后端的情况下使用Ember Data的推荐方式。
堆栈溢出时,还有其他关于“ Ember模型到json的引用”,但是它们已经过时了,我特别想知道我的方法/假设是否正确,如果不正确,可以选择什么。我对Ember非常陌生。
问题
//Route
import Ember from 'ember';
export default Ember.Route.extend({
model() {
let shape, square;
square = this.store.createRecord('square');
shape = this.store.createRecord('shape', {
shared: 'shared-value',
square: square
});
return shape;
}
});
//Controller
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
someActionName() {
console.log(this.store.peekRecord('shape', 1)); //undefined!
}
}
});
//Shape Model
import DS from 'ember-data';
export default DS.Model.extend({
shared: DS.attr('string', { defaultValue: '' }),
square: DS.belongsTo('square')
});
//Square Model
import DS from 'ember-data';
export default DS.Model.extend({
sides: DS.attr('string', { defaultValue: '4' }),
whereIbelong: DS.belongsTo('shape')
});
我认为使用不是store.push
长期有效的方法,最好使用Ember Data期望的save
和destroyRecord
方法。
您可以使用本地存储从基础适配器创建适配器,或者仅返回在createRecord/updateRecord
工作中传递的记录。
尝试一下它,并找到最适合您的用例的适配器,它非常灵活。
附带一提,我发现store.push
按预期工作的最佳方式是这样的:
var obj = {
id: '1',
name: "object name",
// More object properties...
};
store.push(store.normalize('model-name', obj));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句