gpt4 book ai didi

ember.js - Ember 没有后端 API 的数据使用并将模型转换为 JSON (Ember 2.5.0)

转载 作者:行者123 更新时间:2023-12-01 06:07:28 27 4
gpt4 key购买 nike

我使用的是 Ember v2.5.0,没有外部数据存储。

使用 createRecord 方法在路由上创建记录后,无法在应用程序的其他部分( Controller 或组件)中查询。

我的理解是我需要使用 store.push将记录保存在本地,以便 Controller 可以访问它。但是 store.push 方法要求参数为 json 格式。

我可以去掉模型但是我想知道是否有一种使用 Ember 2.5.0 版将模型转换为 json 格式的快速方法?
我还想知道,在没有外部后端的情况下使用 Ember Data 时,我对使用 store.push 在本地持久化数据的假设是否是推荐的方法。

关于堆栈溢出的“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是一个很好的长期方法,最好使用 savedestroyRecord方法,正如 Ember Data 所期望的那样。

您可以从 base Adapter 创建适配器使用本地存储,或者可能只是返回传入的记录 createRecord/updateRecord作品。

试验它并找到更适合您的用例的方法,适配器非常灵活。

作为旁注,我发现制作 store.push 的最佳方法按预期工作是这样的:

var obj = {
id: '1',
name: "object name",
// More object properties...
};
store.push(store.normalize('model-name', obj));

关于ember.js - Ember 没有后端 API 的数据使用并将模型转换为 JSON (Ember 2.5.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36811910/

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