我有这个型号:
App.Game = DS.Model.extend({
name: attr(),
uri: attr()
});
和这条路线:
App.GamesRoute = Ember.Route.extend({
model: function() {
return this.store.find('game');
}
});
这很好用,调用后端服务器,并在商店中存储元素(我已经用Ember检查器检查过)。这是我回来的json:
{"游戏":[{" ID":"井字游戏""名称":"井字游戏" " URI":" http://localhost:10000/games/TicTacToe"}]}
现在我有这个游戏的模板' (剪断):
{{#each game in model}}
{{#link-to 'games.matchlist' game.id}}{{game.uri}}{{/link-to}}
这显示了每个游戏的URI。现在在games.matchlist路线中,我想做的是通过game_id收到的参数在商店中搜索并获取游戏URI。原因是服务器没有遵循RESTAdapter约定,我想自己对该URI进行自定义AJAX查询。 这不起作用:
App.GamesMatchlistRoute = Ember.Route.extend({model: function(params) {
var store = this.store;
var game = store.find('game', params.game_id)
console.log(game);
console.log("URI: " + game.uri);
此时,游戏是一个对象,但它不是我的模型的实例。它没有uri属性。我究竟做错了什么?我觉得我错过了一些明显的东西。
答案 0 :(得分:0)
我在我的手机上,但你需要创建一个GameAdapter并自定义我相信fetch功能。查看ember站点上适配器的文档,您应该得到答案。
您的另一个选择是从服务器获取数据并使用this.store.pushPayload(data)
。
文档:http://emberjs.com/api/data/classes/DS.Store.html#method_pushPayload
适配器文档在这里:http://emberjs.com/guides/models/customizing-adapters/
答案 1 :(得分:0)
如果您想在不点击服务器的情况下获取记录,并且您知道已经在商店中拥有该记录,请使用this.store.getById(' game',ID)。