在另一条路线上访问商店
Accessing store in another route
我有这个型号:
App.Game = DS.Model.extend({
name: attr(),
uri: attr()
});
这条路线:
App.GamesRoute = Ember.Route.extend({
model: function() {
return this.store.find('game');
}
});
这工作正常,调用后端服务器,并将元素存储在商店中(我已经与 Ember 检查员核实过)。这是 json 我 return:
{"games":[{"id":"TicTacToe","name":"TicTacToe","uri":http://localhost:10000/games/TicTacToe "}]}
现在我有了 'games' 的模板(已截取):
{{#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);
此时,game 是一个对象,但它不是我的模型的实例。它没有 uri 属性。我究竟做错了什么?我觉得我遗漏了一些明显的东西。
我在我的手机上,但你需要创建一个 GameAdapter 并自定义我相信获取功能。查看 ember 站点上的适配器文档,您应该会有答案。
您的另一个选择是从您的服务器获取数据并使用 this.store.pushPayload(data)
。
文档在这里:http://emberjs.com/api/data/classes/DS.Store.html#method_pushPayload
适配器文档在这里:http://emberjs.com/guides/models/customizing-adapters/
如果您想在不访问服务器的情况下获取记录,并且您知道商店中已有它,请使用 this.store.getById('game', ID)。
我有这个型号:
App.Game = DS.Model.extend({
name: attr(),
uri: attr()
});
这条路线:
App.GamesRoute = Ember.Route.extend({
model: function() {
return this.store.find('game');
}
});
这工作正常,调用后端服务器,并将元素存储在商店中(我已经与 Ember 检查员核实过)。这是 json 我 return:
{"games":[{"id":"TicTacToe","name":"TicTacToe","uri":http://localhost:10000/games/TicTacToe "}]}
现在我有了 'games' 的模板(已截取):
{{#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);
此时,game 是一个对象,但它不是我的模型的实例。它没有 uri 属性。我究竟做错了什么?我觉得我遗漏了一些明显的东西。
我在我的手机上,但你需要创建一个 GameAdapter 并自定义我相信获取功能。查看 ember 站点上的适配器文档,您应该会有答案。
您的另一个选择是从您的服务器获取数据并使用 this.store.pushPayload(data)
。
文档在这里:http://emberjs.com/api/data/classes/DS.Store.html#method_pushPayload
适配器文档在这里:http://emberjs.com/guides/models/customizing-adapters/
如果您想在不访问服务器的情况下获取记录,并且您知道商店中已有它,请使用 this.store.getById('game', ID)。