Heyo大家,
故事时间 - 如果您不在乎,请跳过
我刚刚使用@aruntk的Synthesis开始使用Meteor + Polymer,我对结果感到非常高兴,并且非常感谢他投资这个项目的时间。我有一个问题。
我之前只更改了一个铁页面对象来更改我的视图内容。把它放在像FlowRouter.route("/", action: {ironpages.select("home");});
这样的FlowRouter中就可以了。但是,我的网站变得越来越复杂,我想现在重新阅读整个部分。我被告知要反应性地这样做(这是我的理解不足)在这里构建应用程序的首选方式。
tl; dr - 如果您不关心故事,请跳至此处
所以我所做的只是将mwcLayout.render("test-layout",{"main":"yas-manual-page"});
放入我的路由器操作中。但是,我必须重新加载以使更改可见,这不是我想要的。
mwcLayout.render()
调用有效。mwcLayout.render()
我已经阅读了这个主题,人们说这是单页应用程序的一个问题,而不是反应性地构建它等等,但我不知道这是如何不被反应的。它正在对URL更改做出反应。
如果你有一分钟,请与我分享一些见解,我真的被卡住了。 :slight_smile:
祝你们度过美好的一天!
免责声明:这是Meteor论坛的转贴,建议来这里。答案 0 :(得分:1)
此行为作为mwc布局的一项功能添加,以防止在每次路由更改期间多次重新呈现。这里的解决方法是创建另一个mwc布局或设置第三个参数forceRender
。来自mwc:layout docs
forceRender
在mwc:layout中,除非新布局不等于当前布局或设置了forceRender
参数,否则我们不会渲染布局。这是为了防止在更改路由时不必要的重新渲染(即使您更改了param / queryparam,路由也会重新运行,因此在FlowRouter动作中编写的render函数也是如此)。当您必须在保持当前布局的同时更改渲染时,forceRender
会派上用场。
...
<mwc-layout id="demo-landing">
<div region="header"></div>
<div region="main"></div>
</mwc-layout>
...
进口/启动/客户端/ router.js
...
action:function(params,queryParams){
mwcLayout.render("demo-landing",{"main":"test-layout1","header":"test-header"});
}
...
现在,如果你尝试
mwcLayout.render("demo-landing",{"main":"test-layout2","header":"test-header"});
来自控制台它不会工作,因为布局没有改变,forceRender
没有设置。
这项工作 - &gt;
mwcLayout.render("demo-landing",{"main":"test-layout","header":"test-header"},true);