首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改路由时重新渲染模板

更改路由时重新渲染模板
EN

Stack Overflow用户
提问于 2014-02-15 00:56:14
回答 1查看 331关注 0票数 2

我有一个有两个插座的应用程序(在application.hbs中),第二个插座渲染一个视频网格,无论你在哪条路线上,都会显示出来,但显示的视频可能会改变。模型的重要部分“

代码语言:javascript
复制
App.Video = DS.Model.extend({
    ...
    frontpage: DS.attr('boolean'),
    ...
});

因此,当我在大多数路线上时,我希望在frontpage ==为true的情况下显示视频,而在一条路线上,我希望显示所有视频,而不管frontpage说什么。我似乎让它起了一半的作用。重要的路由如下所示:

代码语言:javascript
复制
App.Router.map(function () {
    this.resource('videos', { path: 'videos/' }, function () {
        this.route('video', { path: ':video_id' });
    });
    ...

我的videos.index模板(我在名为outlet的第二个模板中呈现)如下所示:

代码语言:javascript
复制
{{#each video in controller}}
  {{log isFrontPage}}
  <!--if we only want to display the frontpage-videos in the grid -->
  {{#if isFrontPage}}
  <!--show only videos with frontpage = true -->
    {{#if video.frontpage}}
      {{partial 'video-thumbnails'}}
    {{/if}}
  {{else}}
    <!--show all videos, which will be used for the /videos site-->
    {{partial 'video-thumbnails'}}
  {{/if}}
{{/each}}

isFrontPage是ApplicationController中的一个属性,在正确的路由中设置为true/false。当我最初加载索引路径时,一切都很好,只需要用frontpage==true加载视频,当我切换到/videos路径时,一切都很好,它加载所有的视频。但是,无论我走哪条路,它都是一样的。而且足够有趣的是,即使在/videos路由上显示的视频发生变化,log命令也不再打印任何内容。

此外,我还使用renderTemplate函数来获取功能,类似于VideosIndexRoute中的功能

代码语言:javascript
复制
this.render('videos.index', {
  outlet: 'videogrid',
  into: 'videos.index',
  controller: controller
});

ApplicationRoute中也是如此,只有intocontroller用于application路由。

那么有谁知道我如何让ember在路由器级别上重新呈现该模板?或者是我遗漏了什么,还有另一种/更好的方法来做到这一点?任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2014-02-15 03:27:40

好吧,我找到了一个解决方案。问题是,ember只加载ApplicationRoute一次,所以renderTemplate方法再也不会被调用了。我只是创建了一个Route-object,所有其他路由都会扩展它,这样就可以为正确的路由调用正确的renderTemplate。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21785135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档