【发布时间】:2015-06-17 15:32:29
【问题描述】:
在尝试使用 ember 和 ember-localforage-adapter 时,我注意到一个奇怪的行为。
ember.debug.js:4888DEBUG: Ember : 1.12.0
ember.debug.js:4888DEBUG: Ember Data : 1.0.0-beta.18
ember.debug.js:4888DEBUG: jQuery : 1.11.3
我有三个模型:
/app/models/ledger.js
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
purchases: DS.hasMany('purchase', {async: true}),
players: DS.hasMany('player', {async: true}),
});
/app/models/purchase.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
amount: DS.attr('number'),
ledger: DS.belongsTo('ledger', {async: true}),
player: DS.belongsTo('player', {async: true})
});
/app/models/player.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
balance: DS.attr('number'),
ledger: DS.belongsTo('ledger',{ async: true }),
purchases: DS.hasMany('purchase', {async: true}),
});
还有一条简单的路线:
/app/routes/purchase.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function(params) {
return this.store.find('purchase', params.purchase_id);
}
});
我的实验模板是
/app/templates/purchase.hbs
name: {{model.name}}
<br>
amount: {{model.amount}}
<br>
player: {{model.player.name}}
它可以向我显示所有调用的属性。但是,如果我添加另一行,例如
name: {{model.name}}
<br>
amount: {{model.amount}}
<br>
player: {{model.player.name}}
<br>
ledger: {{model.player.ledger.title}}
它只显示玩家的名字,从不显示账本标题。应如何在存储中加载请求的记录以使其在我的模板中可用?
【问题讨论】:
-
你会显示服务器对所有记录请求的响应吗?
-
如果我有机会看到 ember-data 如何与持久层交互,我会明白很多。使用 ember-localforage-adapter 之类的类似 localStorage 的库使我无法理解该迭代。事实上,如果我不碰一下啊,我会为此目的构建一个后端 api。还是谢谢
标签: ember.js