聚合物 - 重新加载核心列表数据

时间:2014-07-28 10:31:19

标签: polymer

我想重新加载一个核心列表元素来显示新数据,但这并不令人耳目一新。 我重新调用生成数据但不起作用的JS函数......并且像'普通'div那样重新加载也不起作用!如果我重新加载整个页面,该列表仅显示新数据...

function values(sender, textomsg, datacriacao, senderfoto){
   var sender2 = sender.split(",");
   var textomsg2 = textomsg.split(",");
   var datacriacao2 = datacriacao.split(",");
   var senderfoto2 = senderfoto.split(",");

   var namegen = {
       generateString: function (inLength) {
           var s = '';
           for (var i = 0; i < inLength; i++) {
               s += String.fromCharCode(Math.floor(Math.random() * 26) + 97);
           }
           return s;
       },
       generateName: function (inMin, inMax) {
           return this.generateString(Math.floor(Math.random() * (inMax - inMin + 1) + inMin));
       }
};

Polymer('list-test', {

    count: sender.length,
    ready: function () {
        this.data = this.generateData();

    },
    generateData: function () {
        var names = [], data = [];
        for (var i = 0; i < this.count; i++) {
            names.push(namegen.generateName(4, 8));
        }
        names.sort();
        for (var i = 0; i < this.count; i++) {
            data.push({
                index: i,
                sender: sender2[i],
                textomsg: textomsg2[i],
                datacriacao: datacriacao2[i],
                senderfoto: senderfoto2[i]
            });
        }

        return data;

    },
    tapAction: function (e) {
        console.log('tap', e);
    }
});

}

&LT;%----%GT;

<template id="templateConversas" runat="server">

  <div id="item" class="item {{ {selected: selected} | tokenList }}"  ><%--onClick="conversa('{{name}}');"--%>
    <div class="message" style="background-image: url({{senderfoto}});">
      <span class="from"><br/>{{sender}}</span>
      <span class="timestamp">{{datacriacao}}</span>
      <div class="subject"><br/>{{textomsg}} </div><%--------Infinite List. {{index}}--%>
      <%--<div class="body"><br/>Mensagem de teste...........</div>--%>
    </div>
  </div>

     </template>

问题还在于重新加载'list-test'。如果我在加载列表后调用js函数它不会应用新数据...

1 个答案:

答案 0 :(得分:1)

您的代码不完整,因此很难理解,但我认为问题在于您没有将generateData()函数的结果分配给模板的模型。尝试使用以下组件脚本

Polymer('list-test', {
  created: function () {
     this.data = [];
  },
  refresh: function () {
     this.data = this.generateData();
  },
  generateData: function () {
    // your original code here
  }
});

现在,当您调用refresh()元素的list-test时,应使用新生成的数据更新列表内容。要在创建元素时填充列表,请添加

ready: function () {
   this.refresh();
},