访问模板中的模型数据

时间:2015-08-26 01:39:46

标签: ember.js

我的路线定义如下:

Router.map(function() {
    this.route('games', function() {
        this.route('game', {path: '/:game_id'}, function() {});
    });
});

当我访问路径/games/1时,我必须访问模型数据,如下所示:

{{model.title}}

阅读文档,似乎控制器会在没有模型前缀的情况下使模型数据可用,所以我认为我能够做到这一点:

{{title}}

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

2 个答案:

答案 0 :(得分:7)

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

这已不再可用,因为它引起了社区的混乱。

docs的新版本不再引用$msg='Phone:'.$_POST['phone'].',Email:'.$_POST['email'].',Message:'.$_POST['query'].''; // This is dynamic msg. $urlpara="http://xxx.xxx.xxx.xx:8080/sendsms/bulksms?username=xxx&password=xxxx&type=0&dlr=1&destination=xxxx&source=xxxx&message=".$msg.""; $response = sentSmS($urlpara); if($response){ header('Location: thankyou.html'); exit; }else{ header('Location: thankyou.html'); exit; } function sentSmS($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); return true; } {{title}}

如果你真的想在没有model前缀的情况下使用它,你可以使用Ember.computed.alias但我建议坚持使用model,因为它更容易阅读并识别为模型属性vs控制器属性,特别是因为可路由组件在不久的将来被设置为替换控制器(~2.6)。

答案 1 :(得分:0)

您可以使用{{model.title}}{{content.title}}。之前可以使用ObjectControllers直接访问属性,但现在已经消失,没有别的办法了。

[编辑]

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

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

希望这有帮助。