2017-05-17 4 views
0

を削除されたときにここで開き抜粋です:ゾーンのリストからゾーンを削除して、このダイアログで行うことができることのポリマー紙ダイアログは、他の配列項目は

<template is="dom-repeat" items="{{zones}}" as="zone"> 
    <paper-button on-tap="_openSettings">Open Settings 
    </paper-button> 
    <paper-dialog id="[[_getZoneSettingsId(zone.id)]]" class="zone-settings"> 
    <input type="button" class="delete-zone" value="Delete zone" on-tap="_deleteZone"/> 
    </paper-dialog> 
</template> 

<script> 
    Polymer({ 
    ..., 
    _openSettings: function(e) { 
     var zone = e.model.zone; 
     this.$$("#" + this._getZoneSettingsId(zone.id)).open(); 
    }, 

    _getZoneSettingsId: function(zoneId) { 
     return "zone-settings-" + zoneId.toString(); 
    }, 

    _deleteZone: function(e) { 
     var zone = e.model.zone; 
     var zones = this.zones.slice(0); 
     for (var i = zones.length - 1; i >= 0; i--) { 
     if(zone.id === zones[i].id) { 
      zones.splice(i, 1); 
     } 
     } 
     this.set("zones", zones); 
    } 
    }) 
</script> 

一つ。これは、リスト内の最後のゾーンを削除する限り正常に動作します。ただし、2つのゾーンがあり、最初のゾーンを削除すると、最初のゾーンを置き換えたように、2つ目のゾーンのダイアログが自動的に開きます。

これはdom-repeatの仕組みと関係がありますが、私はそれを修正する方法がわかりません。すべての手がかりは?

+1

は、ポリマーアレイの機能を使用するようにしてください。 https://www.polymer-project.org/1.0/docs/devguide/model-data#array-mutation –

+0

@Kubaはい、これで解決しました。あなたが答えとして投稿するなら、私は受け入れます。 –

答えて

1

配列の変更についてポリマーに通知するには、配列の突然変異関数を使用する必要があります。だから、あなたが使用することができ、あなたのケースでthis.splice();

すべてのこれらの機能は、ここで見つけることができます:https://www.polymer-project.org/1.0/docs/devguide/model-data#array-mutation

関連する問題