聚合物不删除已删除的元素

时间:2016-01-13 16:55:49

标签: javascript data-binding polymer polymer-1.0

使用Polymer Stater Kit,我创建了两个自定义元素:

  • flow-list.html (此处声明为 flowElementArray
  • flow-element.html (这里定义了删除功能)

app.js 文件中,我还定义了一个addElement函数。

我可以在 flowElementArray 中添加元素,然后显示它们。

但是,当我从 flowElementArray 中删除元素时,它们仍会显示。

以下是我获得以下结果的方法:

  1. App start(预装2件)
  2. 我删除了一个项目(项目停留在屏幕上)
  3. 我添加了一个项目(项目已添加,顺便删除了一个项目)
  4. enter image description here

    这种奇怪行为可能是什么原因?

    编辑我无法在plunker / codepen.io / jsbin上运行示例,所以这里是在github上。

    我如何添加元素:

    app.storageLoaded = function() {
    
      if (this.$.s1.value === '' || this.$.s2.value === '') {
        window.alert('One field is Empty!');
        return;
      }
    
      this.$.flowListID.push('flowDictionnary',
      {
        first: this.$.s1.value,
        last: this.$.s2.value
      });
    };
    

    我如何删除:

    removeItem: function() {
      var counter = 0;
      while (counter < this.dict.length) {
        var item = this.dict[counter];
        if (item.first === this.name) {
          this.dict.splice(counter, 1);
        } else {
          counter++;
        }
      }
    }
    

1 个答案:

答案 0 :(得分:2)

在Polymer中对数组属性执行操作时,您需要在操作后使用this.push('myArrayProperty', item)this.splice('myArrayProperty', 0, 1)或调用this.notifyPath('myArrayProperty')

removeItem: function() {
  var counter = 0;
  while (counter < this.dict.length) {
    var item = this.dict[counter];
    if (item.first === this.name) {
      // this.dict.splice(counter, 1);
      this.splice('dict', counter, 1);
    } else {
      counter++;
    }
  }
}