我有一个带有嵌套路由的 jsfiddle,我将一个动态路由timeSlot嵌套在另一个动态路由约会中。在约会模板中,我有一个#link-to 'timeSlot'。当我单击该链接时,timeSlot 模板永远不会呈现,并且在控制台中我看到:
This link-to is in an inactive loading state because at least one of its parameters presently has a null/undefined value, or the provided route name is invalid.
这是路由器。请注意,如果我将timeSlot 路由从动态路由更改为正常路由,即链接 this, this.resource('timeSlot'),错误消失并显示模板。该路线需要是动态的,因为它接受通过用户从日历中单击传入的日期。
它是一个小的 jsfiddle, jsfiddle中 95% 的代码都粘贴在这个问题中:
App.Router.map(function(){
this.resource('appointments', {path: "/"}, function(){
this.resource('appointment', {path: "/:appointment_id"}, function(){
this.resource('timeSlot', {path: '/:day'});
});
});
});
约会路线
App.AppointmentRoute = Ember.Route.extend({
model: function(params){
},
setupController: function(controller, model){
this._super(controller, model);
controller.set('content', model);
}
});
时隙路线
App.TimeSlotRoute = Ember.Route.extend({
model: function(params){
},
setupController: function(controller, model) {
this._super(controller, model);
controller.set('content', model);
},
serialize: function(dateText) {
/*
return {
day: //this.controllerFor('timeSlot').today.pushObject(dateText)};
*/
}
});
约会模板
<script type="text/x-handlebars" data-template-name="appointment">
<br/>
{{#link-to 'timeSlot' [2013-07-18]}}click timeSlot{{/link-to}}
{{outlet}}
</script>
时隙模板
<script type="text/x-handlebars" data-template-name="timeSlot">
<h3> from timeslot template</h3>
{{outlet}}
</script>
更新
对于这条路线:this.resource('timeSlot', {path: ':appointment_id/:day'}); 通过此 jsfiddle 中的 {{#link-to 'timeSlot' id=this day=['today'] }}click timeSlot{{/link-to}}将每个 动态段的值显式传递给链接到,现在可以将鼠标悬停在链接上并查看'#/2/dateText',其中每个斜线段都是动态段的值。在传递动态段的值之前,当我将鼠标悬停在链接上时,我看到的只是/#'表明没有选择动态段。
它仍然无法正常工作。因为它使用在序列化方法中传递的硬编码值,而不是传递给链接到的值。
更新 2
尽管#linkTo 似乎没有调用序列化方法,但此版本正在运行。 http://jsfiddle.net/GQdbD/5/