在Ember Data中查找单例是否有传统方法?我已根据这些说明(在"Singular"下)为我的 GameState
模型设置了适配器:https://stackoverflow.com/a/23974804/173630
现在,当我获取GameState时,我希望能够这样做:
store.find('gameState');
但是,它会在Ember Data中启动一个 findAll
请求类型,它需要一个数组,而不是一个对象 .
我的另一个选择是做这样的事情:
store.find('gameState', 'mine');
mine
param被忽略,但这将成功获取并加载我的GameState . 这里的缺点是Ember Data在我的商店中创建了一个额外的 GameState
实例,其id为 mine
. 有什么办法可以防止这种情况吗?
我正在使用Ember Data 1.0.0-beta.11 .
这是我的模型的样子:
var GameState = DS.Model.extend({
currentPuzzle: DS.belongsTo('puzzle'),
currentRound: DS.belongsTo('puzzleRound'),
currentInventory: DS.attr('number'),
moves: DS.hasMany('move', {async: true}),
createdAt: DS.attr('date'),
updatedAt: DS.attr('date')
});
1 回答
不,不幸的是,这样做会产生副作用 . 你可以在这里做一些不同的事情:
使用私有方法/成员将其删除
切换到findAll / findQuery方法更改您的api然后只返回结果中的第一个项目(这将是唯一的结果) .
做一个无聊的ajax调用,并加载记录 .
findAll / findQuery - 痛苦因为你必须改变你的api
jquery ajax sideload
http://emberjs.com/api/data/classes/DS.Store.html#method_push