我们已经实现了主要内容位于动态侧边栏中的布局。我们定义如下layoutTemplate
:
<template name="layout">
{{> content}}
{{> leftbar}}
{{> rightbar}}
<nav class="navigation">
{{#if currentUser}}
{{> navigation_logged_in}}
{{else}}
{{> navigation_logged_out}}
{{/if}}
</nav>
</template>
我们在布局模板中包括例如 rightbar 模板。
<template name="rightbar">
<aside class="rightbar">
<button id="closeRightBar" class="close-cross"></button>
{{yield 'rightbar'}}
</aside>
</template>
rightbar 模板包括我们在其中生成特定内容的 rightbar yield。
我们已经实现了以下 RouteController:
UserShowRouter = RouteController.extend({
before: function() {
var username = this.params.username;
if(App.subs.user) {
App.subs.user.stop();
}
App.subs.user = Meteor.subscribe('user', username);
},
waitOn: function () {
return Meteor.subscribe('user');
},
data: function() {
return Meteor.users.findOne({'profile.username': this.params.username});
},
action: function() {
this.render('profile', {to: 'rightbar'});
}
});
我们想要实现的是,例如profile
模板被生成到rightbar
产量中,并随着数据的变化而更新和重新渲染。
现在的问题是侧边栏是动态动画、显示和隐藏的。现在每次profile
重新渲染模板时,模板也会layout
重新渲染。这是为什么?我们认为 yield region 的目的之一是整个站点不需要重新渲染。现在,当重新渲染布局时,动画的整个 css 将设置回原始值。
我们现在尝试了几种不同的方法,但它们似乎都不是一个好的和干净的解决方案。有没有办法让layout
模板不被重新渲染,而只是保持产量区域和模板更新?任何建议或替代方案将不胜感激。