我正在使用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>
答案 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>