我的路线定义如下:
Router.map(function() {
this.route('games', function() {
this.route('game', {path: '/:game_id'}, function() {});
});
});
当我访问路径/games/1
时,我必须访问模型数据,如下所示:
{{model.title}}
阅读文档,似乎控制器会在没有模型前缀的情况下使模型数据可用,所以我认为我能够做到这一点:
{{title}}
但没有model
它就无法运作。我不是在创建控制器,因为我不需要为这个特定的路由/模板扩展它。通过model
前缀准确访问模型数据?或者我可能做错了什么?
答案 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'));
}
希望这有帮助。