0

我有一个带有嵌套路由的 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/

4

1 回答 1

1

model由于所有的钩子都是空的,因此很难说出您要做什么。(它们在您的应用程序中实际上是空的吗?)通常,当您调用link-totransitionTotransitionToRouteEmber 时,希望您传入一个实时模型。在这些情况下model,您的路线上的钩子将被跳过,而是使用您传递给的模型link-to

于 2013-10-19T22:17:08.003 回答