如何通过铁页通知页面转换

时间:2015-06-17 06:41:51

标签: polymer polymer-1.0

我正在使用Polymer Starter Kit来构建一个有几页的简单应用程序。我希望其中一个页面显示从服务器加载的项目列表。问题是该列表必须仅在页面可见/转换时加载。我应该如何通知" lazy-list"实际开始加载数据?

<iron-pages attr-for-selected="data-route" selected="{{route}}">

 <section data-route="some-page">
   <paper-material>
      <lazy-list></lazy-list>
   </paper-material>
 </section>

 <section data-route="another page">
   <paper-material elevation="1">
      ...
   </paper-material>
 </section>

</iron-pages>

2 个答案:

答案 0 :(得分:6)

或者您可以观察route,在route === "some-page"时,将刷新请求发送到<lazy-list>

<dom-module id="my-app">
  <template>
    ...
    <iron-pages attr-for-selected="data-route" selected="{{route}}">

     <section data-route="some-page">
       <paper-material>
          <lazy-list id="list"></lazy-list>
       </paper-material>
     </section>

     <section data-route="another page">
       <paper-material elevation="1">
          ...
       </paper-material>
     </section>

    </iron-pages>
    ...
  </template>

  <script>
    Polymer({
      is: "my-app",
      properties: {
        route: {
          type: String,
          observer: "routeChanged"
        },
        ...
      },
      ...
      routeChanged: function (newval,oldval) {
        if (newval === "some-page") {
          this.$.list.refreshList();
        }
      },
      ...
    });
  </script>
</dom-module>

不需要新元素。

答案 1 :(得分:0)

不确定这是否是最佳解决方案,但我只是为包含该部分的“Page”创建了一个新元素。此元素侦听属性更改,并在将“铁选”添加到类名时加载列表。

<dom-module id="some-page">

  <style>

   </style>

  <template>

    <paper-material>
        <lazy-list id="list"></lazy-list>
     </paper-material>

  </template>

  <script>
    (function() {
      Polymer({
        is: 'some-page',

        ready : function(){

        },

        attributeChanged : function(name, type){
          if(this.getAttribute('class').includes('iron-selected')){
              this.$.list.refreshList();
          }
        }

      });
      })();
  </script>

</dom-module>