Ember.js 在模板中访问模型数据

Ember.js 在模板中访问模型数据,ember.js,Ember.js,我的路线定义如下: Router.map(function() { this.route('games', function() { this.route('game', {path: '/:game_id'}, function() {}); }); }); 当我访问path/games/1时,我必须访问模型数据,如下所示: {{model.title}} 在阅读文档时,控制器似乎会使模型数据在没有模型前缀的情况下可用,因此我认为我能够做到这一点: {{ti

我的路线定义如下:

Router.map(function() {
    this.route('games', function() {
        this.route('game', {path: '/:game_id'}, function() {});
    });
});
当我访问path
/games/1
时,我必须访问模型数据,如下所示:

{{model.title}}
在阅读文档时,控制器似乎会使模型数据在没有模型前缀的情况下可用,因此我认为我能够做到这一点:

{{title}}

但是如果没有
模型
,它就无法工作。我没有创建控制器,因为我不需要为这个特定的路由/模板扩展它。通过
模型
前缀访问模型数据是否准确?或者我可能做错了什么?

您可以使用
{{model.title}
{{content.title}
。早些时候,可以使用直接访问属性,但现在,由于这些都没有了,没有其他方法

[编辑]

还有一种方法,您可以在路由中扩展
setupController
,并在控制器本身上设置标题。这样您就可以直接使用
{{title}

setupController: function(controller, model) {
   this._super(controller, model);
   controller.set('title', model.get('title'));
}

希望这有帮助。

在Ember中,您的模型必须按照文档中描述的路线加载

假设您使用的是ember cli,则您的路线如下所示:

export default Ember.Route.extend({
  model: function() {
     // Must return some data or promises
    }
});
模型函数可以返回数据数组,也可以返回解析为数组的承诺。 如果您使用的是余烬数据,则函数返回将如下所示:

return this.store.find('game', params.game_id);
您还可以直接向API请求:

return Ember.$.getJSON('https://your-website.com/game/' + params.game_id);

您所指的文档是旧的,在过去(1.13 iirc之前),控制器有一个模型代理,如果在控制器上找不到属性,该代理将查找模型上的属性

这已不再可用,因为它在社区中造成了混乱

新版本的不再引用没有
模型的
{{title}


如果您真的想在不使用
model
前缀的情况下使用它,我建议您还是使用
model.
,因为它更易于阅读和识别为model属性vs controller属性,特别是因为可路由组件设置为在不久的将来替换控制器(~2.6).

无需在
setupController
中执行此操作。控制器上的计算属性具有
model的从属键。对于此类属性,title
更合适thing@KitlerOP在问题中提到,他不想创建控制器。因此,在我看来,实现
setupController
是最好的方法。他确实意识到控制器是自动生成的,对吗?我希望如此。但我认为controller将在运行时自动生成,但不会在代码中自动生成。OP似乎遵循了一些非常古老的教程/参考资料,他剩下的问题中充满了不推荐/停止使用的功能。完美。我不介意用模型。我只是想确定我做得对。谢谢你的澄清。