我有一個應用程序有兩個插座(位於application.hbs中),其中 - 第二個渲染視頻的網格顯示,無論您在哪條路線上,但視頻顯示的內容可能會改變。模型」更改路線時重新渲染模板
App.Video = DS.Model.extend({
...
frontpage: DS.attr('boolean'),
...
});
的重要位所以,當我在最路線我想顯示在FrontPage視頻==真和一個路由我想顯示的所有視頻,不管是什麼頭版說。 我似乎已經得到了一半的工作 的重要路線是這樣的:
App.Router.map(function() {
this.resource('videos', { path: 'videos/' }, function() {
this.route('video', { path: ':video_id' });
});
...
而且我videos.index
模板(這是我在第二個,命名爲出口呈現)是這樣的:
{{#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
:
this.render('videos.index', {
outlet: 'videogrid',
into: 'videos.index',
controller: controller
});
而在ApplicationRoute
我有相同的,只是into
和controller
都爲application
路線。
因此,任何人都知道我可以如何使路由器級別的模板燼重新渲染?還是有什麼我失蹤,還有另一種/更好的方式來做到這一點?任何幫助真的很感激。
找到了解決辦法。我現在簡單地擴展一個預先定義的路由,相應地設置isFrontpage和this.render。 – Markus