我无法将具有多个模型的用户的参数传递给路线。起初我有这个代码:
App.IndexRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('user', params.id);
}
});
这很好,并且通过了所有用户参数。
但是现在我需要来自“游戏”模型的数据。下面的代码成功地将“游戏”数据传递给模板,但现在我没有用户参数,并且在尝试将代码放入传递时我不断收到语法错误。
App.IndexRoute = Ember.Route.extend({
model: function(params) {
return Ember.RSVP.hash({
game: store.find('game'),
user: store.find('user')
});
},
setupController: function(controller, models) {
var game = models.game;
var user = models.user;
controller.set('content', game);
controller.set('user', user);
}
});
我想知道如何让2个模型进入1条路线,并且也为用户提供参数。
我也不完全理解setupController
以及我需要在索引控制器中添加的内容。
答案 0 :(得分:0)
首先,如果你在没有指定要查找的对象的情况下执行 store.find(),它将返回该类型的所有对象。所以你将拥有一个数组。
如果您想找到具有特定ID的用户(可能来自params),您可以这样做:
this.store.find('user', params.user_id);
在 store 之前注意 this。。
至于游戏,我需要了解您的用户和游戏模型是如何设置的,以及它们之间的关系。但基本上,除非你使用嵌套路线,否则你必须有一种方法可以在你的模型中找到用户后,根据用户找到一个或所有游戏。
我会完全删除 setup_controller ,因为这里不需要它。您可以在模板中访问用户和/或游戏,如下所示:
model.user
model.game
或者您可以在控制器上添加两个计算属性:
user: function(){
return this.get('model.user');
}.property('model.user'),
game: function() {
return this.get('model.game');
}.property('model.game')
在您的模板中,您只需将其作为用户或游戏进行访问。