Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模板仅在刷新页面后呈现_Javascript_Ember.js_Handlebars.js - Fatal编程技术网

Javascript 模板仅在刷新页面后呈现

Javascript 模板仅在刷新页面后呈现,javascript,ember.js,handlebars.js,Javascript,Ember.js,Handlebars.js,我想要一份大学的名单,点击其中一所之后,在这个名单旁边应该会显示专业名单。单击其中一个专业后,在这两个科目列表旁边显示。然而,我想我在路由上做了些错事。点击其中一所大学后,URL会发生变化,但专业列表不会显示出来。但是在刷新页面(使用此url)后,它工作得非常好。代码如下: 就像其他人说的,你的jsbin不起作用。很明显,真正的问题在于你的链接。如果它在刷新时起作用,但在单击链接时不起作用,那么区别在于模型来自何处。刷新时,模型来自模型挂钩。使用链接导航时,模型由link to语句提供 在你的情

我想要一份大学的名单,点击其中一所之后,在这个名单旁边应该会显示专业名单。单击其中一个专业后,在这两个科目列表旁边显示。然而,我想我在路由上做了些错事。点击其中一所大学后,URL会发生变化,但专业列表不会显示出来。但是在刷新页面(使用此url)后,它工作得非常好。代码如下:

就像其他人说的,你的jsbin不起作用。很明显,真正的问题在于你的链接。如果它在刷新时起作用,但在单击链接时不起作用,那么区别在于模型来自何处。刷新时,模型来自模型挂钩。使用链接导航时,模型由link to语句提供

在你的情况下,如果你刷新页面,你会从你的大学模型钩子中得到某所大学的专业。如果从页面中单击大学,则大学模型将发送到大学资源,而不是该大学的专业

因此,要么这需要说是专业

{{#each}}
   <li {{bindAttr id="id"}}>
     <div class="list-element-title">
        {{#link-to 'university' this.majors}}{{name}}{{/link-to}}
     </div>
   </li>
{{/each}}

我没有查看您的其余代码,但请确保您通过链接发送的模型与通过模型挂钩获得的模型相同。

您的JSBin根本没有为我运行。@JeremyGreen它对我不起作用,因此,我只是替换了依赖项的相对路径,但它仍然有点断裂……好吧,在我将其更改为this.majors后,它可以在单击时工作,但链接类似于/univ/undefined。所以现在刷新后它就不起作用了。是的,我想睡觉后,你真的需要把linkto和model钩子都改成university(因为serialize方法构建url,从模型中获取id)。因此,您需要更新模板,以反映university对象就是对象(也就是说,它不是数组),并且您需要在专业上循环,而不仅仅是控制器。我更改了“university”模板。我用了{{{{{{{{{{{}而不是{{{{{{{{{{{}每个专业}}}来代替{{{{{{{{{{}每个专业}}。很好用。
{{#each}}
   <li {{bindAttr id="id"}}>
     <div class="list-element-title">
        {{#link-to 'university' this}}{{name}}{{/link-to}}
     </div>
   </li>
{{/each}}
 App.UniversityRoute = Ember.Route.extend({
  model: function(params) {
    var majors = universities.findBy('id', params.univ_id).majors;
    return majors;
  }
 });