我想要{{linkTo}}
的/activities/:user/:by_date
路线:
this.resource('activities', { path: '/activities' }, function() {
this.route('by_date', {path: '/:user/:by_date'});
});
如果我直接将参数放入 URL 控制器行为正确,我只希望我的应用程序模板链接到这个 URL,并为这些参数设置一组合理的硬编码值。我试图通过在以下位置设置一个实例变量来做到这一点ApplicationController
:
activityDefaults: {user:1, by_date:"2013-07-01"}
我认为在应用程序模板中有linkTo:
{{#linkTo "activities.by_date" activityDefaults}}Activities{{/linkTo}}
不幸的是,这不起作用,将 URL 解析为:
/activities/undefined/undefined
任何和所有的帮助将不胜感激。
-=-=-=-=-=-=-=-=-=-= 更新 -=-=-=-=-=-=-=-=-=-=-=
我试过制作activityDefaults
一个 Ember 对象:
module.exports = activityDefaults = Ember.Object.create({
user_id: 1,
by_date: "2012-07-12"
});
然后我添加了一个序列化程序ActivitiesByDateController
:
serialize: function(model) {
return {
user_id: model.get('user_id'),
by_date: model.get('by_date')
};
}
{{linkTo}}
仍然不起作用,但存在细微差别。将鼠标悬停在链接上,您将不再看到基本 URL 之外的任何 URL(注意:在它之前/activities/undefined/undefined
)。此外,当您单击链接时,它会将以下消息发送到浏览器的控制台:
此 linkTo 处于非活动加载状态,因为它的至少一个参数当前具有空值/未定义值,或者提供的路由名称无效。
注意:我确实将 on_date/by_date 的不一致使用更改为始终使用 by_date 命名约定。当 Ember 转换带下划线的变量并将它们转换为 camelCase 时,我有点模糊。我不认为我遇到了这个问题,但它在我的脑海中困扰着我。