过滤查询作为命名出口的模型和控制器

时间:2013-07-11 19:41:13

标签: ember.js

我有一个带有玩家和团队模型的幻想体育应用程序。我正在尝试在Players模型/ fixture上输出一个查询,作为由命名插座中的模板迭代的模型。我认为我的问题在于'availableTeams'控制器/路由/模型/路由。

我正试图在我的玩家模型上找到没有团队的玩家。

App.AvailablePlayersController = Ember.ArrayController.extend({
 availPlayers: function() {
    return App.Player.find({league: ''});
    // return App.Player.find({league: 'mlb'}); // Doesn't work either
  },
});

模板正在渲染,因为静态文本显示,但Chrome emberjs调试器将availablePlayers的模型显示为没有值。我搜索了SO,EmberJS.com入门指南和无数的JSFiddles,但没有工作。我不知道我的方法是错误的,还是我错过了一些简单的东西。任何帮助表示赞赏。

Full JSFiddle在这里:http://jsfiddle.net/sandalsoft/77P8z/

PS - 该应用程序是一个多项运动的幻想联盟,其中团队是玩家,所以不要让玩家夹具中的团队名称抛弃你。

编辑:更新了现在运行的小提琴:http://jsfiddle.net/77P8z/

1 个答案:

答案 0 :(得分:3)

当您使用renderTemplate时,您的控制器无法从路线获取模型,因为没有路线。您使用的查找器返回promise,但这些东西属于路径。它是Catch-22,因此您必须在控制器上手动设置contentmodel

我通常在自定义render之前执行此操作。您可以在其他地方执行此操作,关键是手动设置内容。以下是renderTemplate的修改后的ApplicationRoute

var availController = this.controllerFor('availablePlayers');
App.Player.find({league: 'epl'}).then(function(result) {
    availController.set('model', result);
});

// render into outlet

更新后的jsfiddle

我注意到你正在使用rc.3。尝试切换到rc.6,如果可能的话,你将需要异步路由器,并最终修复它。