- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们实现了一种布局,主要内容位于动态侧边栏中。我们定义了以下 layoutTemplate
:
<template name="layout">
{{> content}}
{{> leftbar}}
{{> rightbar}}
<nav class="navigation">
{{#if currentUser}}
{{> navigation_logged_in}}
{{else}}
{{> navigation_logged_out}}
{{/if}}
</nav>
</template>
我们包括例如布局模板中的右栏模板。
<template name="rightbar">
<aside class="rightbar">
<button id="closeRightBar" class="close-cross"></button>
{{yield 'rightbar'}}
</aside>
</template>
rightbar 模板包含 rightbar yield,我们将特定内容 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
模板被 yield 到 rightbar
yield 中,并随着数据的变化而更新和重新呈现。
现在的问题是边栏是动态动画、显示和隐藏的。现在,每次 profile
模板被重新渲染时,layout
模板也会被重新渲染。这是为什么?我们认为产生区域的目的之一是整个站点不需要重新渲染。现在,当重新渲染布局时,动画的整个 css 都设置回原始值。
我们现在已经尝试了几种不同的方法,但似乎没有一种是好的和干净的解决方案。有没有一种方法可以防止 layout
模板被重新渲染,而只是保持 yield region 和模板是最新的?任何建议或替代方案将不胜感激。
最佳答案
据我了解,重新渲染模板“冒泡”并导致重新渲染其父模板的行为并不是 iron-router 或代码实现方式所特有的,而是固有的 Spark 。据我从其文档中得知,Iron-router 的 {{yield}} 模式不会改变此行为。
好消息是 Spark 即将被一个更新的、更细粒度的渲染引擎所取代,目前代号为“Spacebars”,这应该可以缓解这种担忧。
这是新渲染系统的预览:
https://github.com/meteor/meteor/wiki/New-Template-Engine-Preview
一周前的这篇演讲也很好地描述了新渲染引擎带来的好处(虽然时间相当长,但在前 5 分钟内给出了概述):
https://www.youtube.com/watch?v=aPf0LMQHIqk
至于你今天的选择,你可以:
a) 使用 {{#constant}} 和 {{#isolate}} 参数尝试限制重新渲染。
b) 从上面链接中描述的开发分支工作:
You can play with the current work-in-progress version of the code using the template-engine-preview-4 release tag (run your app with meteor --release template-engine-preview-4), or by checking out the shark branch (it's an internal codename).
c) 如果您的项目时间框架允许,最好的是允许重新渲染继续,直到 Meteor 1.0 命中并且“空格键”驻留在主分支上 - 听起来这是 1-3 个月之后。
关于node.js - meteor 铁-路由器布局效果图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19909945/
这是我的案例。我正在构建一个模板,该模板应该根据我可以通过标识符获取的一些数据来呈现图表。 我将在此处展示的示例是我的代码的简化版本,它完全描述了我的问题。 这是我的 HTML: example
我想知道是否有任何方法可以显示在 iron-autogrow-textarea 中输入的符号数量?如果是的话我该怎么做? 我尝试过这个解决方案。 Javascript函数: countChars: f
我正在使用 iron:router 包开发 meteor 。我的 javascript 文件包含: Router.route('/', function () { this.render('hom
我正在尝试使用iron:router 来实现页面之间的转换。我在 css 中定义了动画,现在我需要的就是用iron:router 调用它们。由于某种原因,以下代码: animateContentOut
我们实现了一种布局,主要内容位于动态侧边栏中。我们定义了以下 layoutTemplate: {{> content}} {{> leftbar}} {{> rightbar}}
我在学习 meteor 0.8.3并尝试使用 iron-router 设置一些基本路由 我的 smart.json包含: { packages: { iron-router: {
你好,我在index.html中有这个: 我的 test2 元素是: add
我想在当前的不同路线上添加类。 我的脚本: Template.layout.rendered({ rowClass: function() { var blockGridCon
我想在客户端上呈现两种不同的布局。 Router.route('/', { template: 'register', layoutTemplate: 'home' }); Rout
当您在 iron:router 中为 meteor 创建通配符 URL 时,pathFor 模板助手以及 Router.go 和 Router.routes[routeName].path() 似乎已
如何使Iron:router重新渲染模板? 我有这个HTML: list find {{> yield}} list 和这个js: Router.configure({
我在使用 Router.go() 函数时遇到问题。我有一个表格,当它提交时,它应该将我路由到测验页面。目前它会执行此操作,但它会立即带我返回表单所在的主模板。我离开 Meteor 几个月了,所以我毫不
我遇到了这个奇怪的错误: “找不到名为‘loading’或‘loading’的模板。你确定你定义了它吗?” 就像Iron router: Error: Couldn't find a template
我的困境是我想将多个对象属性传递给 Meteor 中的 iron:router 路由。原因是我想向它传递一个属性来命名我的 url 和一个属性来查找一个集合项。它们彼此完全独立,我不能使用 url 属
我正在使用 Meteor 编写一个应用程序,它需要从 POST 请求中获取数据并在同一路径上呈现成功页面。这是我当前的/submit 路线代码: Router.route('/submit', fun
出于某种原因,我的data: function... 总是返回undefined。 这是我的服务器代码: Flyers = new Mongo.Collection('flyers'); Meteor
我最近在将输入元素的数据绑定(bind)到 iron-ajax 的“body”属性时遇到了问题。当我在 polymer 0.5 上使用 core-ajax 时,我可以像这样轻松地绑定(bind)值:
我是一名优秀的程序员,十分优秀!