2016-08-08 50 views
0

Versuchen, mit Polymer-Framework für mein kleines Projekt zu geifern. Polymer dom-Wiederholungsfehler des Arrays innerhalb des Objekts ParsenPolymer dom-repeat Fehler beim Analysieren des Arrays innerhalb des Objekts

Im Folgenden finden Sie den Code ein Aufruf

<paper-tabs scrollable selected={{selected}}> 
    <template is="dom-repeat" items="{{rooms}}"> 
     <paper-tab>{{item.name}}</paper-tab> 
    </template> 
    </paper-tabs> 

    <iron-pages selected="{{selected}}"> 
    <template is="dom-repeat" items="{{rooms}}"> 
     <div> <port-config room-config="{{item}}"></port-config> </div> 
    </template> 
    </iron-pages> 

</template> 

<script> 
Polymer({ 
    is: "rooms-config", 

    properties: { 

    selected: { 
     type:Number, 
     value: 0, 
     }, 

    rooms: { 
     type: Array, 
     value: function() { 
      var testData = [ 
      { 
       name: "Room1", 
       maxPorts: 16, 
       ports:{ 
       type: Array, 
       value: function() { 
        var testData = [ 
        {portName: "Port 1",portStatus: "true"}, 
        {portName: "Port 2",portStatus: "true"}, 
        {portName: "Port 3",portStatus: "true"}, 
        {portName: "Port 4",portStatus: "true"}, 
        ]; 
        return testData; 
       } 
       } 
      } 
     } 
    } 
}); 

Es folgt mein Port-config Erklärung

<template> 
<paper-material elevation="-1"> 
    <template is="dom-repeat" items="{{roomConfig.ports}}"> 
    <div class="container"> 
     <div class="flexchild">{{item.portName}}</div> 
     <div class="flex1child"> 
     <paper-toggle-button toggles checked$="{{item.portStatus}}"></paper-toggle-button> 
     </div> 
     <div class="flex1child"><iron-icon icon="icons:settings"></iron-icon></div> 
     </div> 
    </template> 
</paper-material> 
</template> 

<script> 
Polymer({ 
    is: "port-config", 
    properties: { 

    roomConfig: { 
     type: Object, 
     value: function() { 
     return {}; 
     } 
    } 
    } 
}); 

</script> 

Mit diesem Setup ich Störung erhalte [dom-repeat :: dom-repeat]: erwartetes Array für items, gefunden Objekt {}

Antwort

0

Das Problem sollte sein, dass Sie für den Wert des Attributs Funktionen anstelle von Werten übergeben.

Zum Beispiel:

rooms: { 
    type: Array, 
    value: [ 
    { 
     name: "Room1", 
     maxPorts: 16, 
     ports: [ 
     {portName: "Port 1",portStatus: "true"}, 
     {portName: "Port 2",portStatus: "true"}, 
     {portName: "Port 3",portStatus: "true"}, 
     {portName: "Port 4",portStatus: "true"}, 
     ] 
    } 
    ] 
} 

Es sind andere Orte auf dem Code, den Sie dies tun, so dass Sie brauchen werden:

rooms: { 
     type: Array, 
     value: function() { 
      var testData = [ 
      { 
       name: "Room1", 
       maxPorts: 16, 
       ports:{ 
       type: Array, 
       value: function() { 
        var testData = [ 
        {portName: "Port 1",portStatus: "true"}, 
        {portName: "Port 2",portStatus: "true"}, 
        {portName: "Port 3",portStatus: "true"}, 
        {portName: "Port 4",portStatus: "true"}, 
        ]; 
        return testData; 
       } 
       } 
      } 
      ] // Also you've missed this close bracket. 
     } 
    } 

Dieses Zimmer Attribut sollte wie folgt writed werden um sie auch zu reparieren.

+0

Dank ein Ton Mario. Ich folgte dem [Link] (https://www.polymer-project.org/1.0/docs/devguide/properties) und es zeigte die Erklärung wie folgt. Überrascht. Eigenschaften: { Benutzer: { Typ: Array, Wert: Funktion() { Return []; } } – rcreddy

+0

Hat es jetzt funktioniert? Ich habe nie bemerkt, dass es Beispiele in der Polymer-Dokumentation gibt, die die Werte auf diese Weise verwenden ... irgendwie komisch. Nun, als vielleicht kannst du den Wert per Funktion deklarieren, aber ich sehe niemanden, der das so erklärt ... wenn ja, könnte alles nur um diese eine Klammer gehen, die du verpasst hast. – MarioAleo

+0

Die Funktion für Wert ist nur für 'Object' und' Array'. Sie können dies [link] (http://stackoverflow.com/questions/38811194/why-use-function-wrap-for-ppolymer-property-value-of-type-object) für weitere Details überprüfen. – a1626