MWC:如何重新报道URL更改

时间:2016-08-06 08:25:01

标签: javascript meteor polymer web-component

Heyo大家,

故事时间 - 如果您不在乎,请跳过

我刚刚使用@aruntk的Synthesis开始使用Meteor + Polymer,我对结果感到非常高兴,并且非常感谢他投资这个项目的时间。我有一个问题。

我之前只更改了一个铁页面对象来更改我的视图内容。把它放在像FlowRouter.route("/", action: {ironpages.select("home");});这样的FlowRouter中就可以了。但是,我的网站变得越来越复杂,我想现在重新阅读整个部分。我被告知要反应性地这样做(这是我的理解不足)在这里构建应用程序的首选方式。

tl; dr - 如果您不关心故事,请跳至此处

所以我所做的只是将mwcLayout.render("test-layout",{"main":"yas-manual-page"});放入我的路由器操作中。但是,我必须重新加载以使更改可见,这不是我想要的。

  • 更改URL时调用路由器操作
  • 如果我在网站的初始构建中重新加载一次页面,则mwcLayout.render()调用有效。
  • 稍后再次致电mwcLayout.render()

我已经阅读了这个主题,人们说这是单页应用程序的一个问题,而不是反应性地构建它等等,但我不知道这是如何不被反应的。它正在对URL更改做出反应。

如果你有一分钟​​,请与我分享一些见解,我真的被卡住了。 :slight_smile:

祝你们度过美好的一天!

免责声明:这是Meteor论坛的转贴,建议来这里。

1 个答案:

答案 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);