2016-06-05 8 views
2

Ich versuche, wie diese einen Standardwert eines Polymers Elements Eigenschaft zu setzen:Polymer: eine Eigenschaft Standardwert Einstellung bewirkt, dass Typeerror

Polymer({ 
    is: 'list-expenses', 

    properties: { 
    route: Object, 
    startDate: { 
     type: String, 
     notify: true, 
     value: 'setStartDate' 
    }, 
    endDate: { 
     type: String, 
     notify: true, 
     value: 'setEndDate' 
    } 
    }, 

    setStartDate: function() { 
     var ref = new Firebase("https://xxx.firebaseio.com/expenses"); 
     ref.orderByChild("sortDate").limitToFirst(1).on("child_added", function(snapshot) { 
      return snapshot.val().sortDate; 
     }); 
    }, 

    setEndDate: function() { 
    var ref = new Firebase("https://xxx.firebaseio.com/expenses"); 
    ref.orderByChild("sortDate").limitToLast(1).on("child_added", function(snapshot) { 
     return snapshot.val().sortDate; 
    }); 
    } 

Wenn ich nun den Code ausführen (Polymer mit serve), erhalte ich die folgende Ausgabe auf der Browser-Konsole:

polymer.html:1938 Uncaught TypeError: Cannot set property '_parent_startDate' of undefined

Dies geschieht auch, wenn ich den Wert auf einen festen Zeichenkette, wie zB set:

startDate: { 
      type: String, 
      notify: true, 
      value: '2016-06-05' 
     } 

Wenn a den Wert nicht angeben, wird der Code ohne Probleme ausgeführt. Es ist natürlich kein Standardwert eingestellt.

Hat jemand eine Idee, was ich falsch mache? Ich benutze die neueste Version von Polymer (gestern installiert).

Danke!

Antwort

1

Ich konnte den Fehler, den Sie angegeben haben, nicht reproduzieren, aber ich vermute, dass dies mit dem Code zusammenhängt, den Sie in Ihrer Frage nicht angegeben haben.

Beachten Sie, dass value zu einem Funktionsnamen (das heißt ein string) nicht erreichen den Effekt Sie erwarten, die vermutlich setzen Sie die Eigenschaft auf den Rückgabewert der angegebenen Funktion einstellen. Mit einer string würde hier nur der Eigenschaftswert auf dieses Zeichenfolgenliteral gesetzt.

Sie sollten eigentlich eine Funktion beliefern, die Ihre gewünschte Funktion für den Rückgabewert ruft:

properties: { 
    ... 
    startDate: { 
     type: String, 
     notify: true, 
     value: function() { return this.setStartDate(); } 
    }, 
    endDate: { 
     type: String, 
     notify: true, 
     value: function() { return this.setEndDate(); } 
    } 
}, 

Als Referenz ist hier der documentation for value:

Type: boolean , number , string or function .

Default value for the property. If value is a function, the function is invoked and the return value is used as the default value of the property. If the default value should be an array or object unique to the instance, create the array or object inside a function. See Configuring default property values for more information.

+0

Dank für Ihre Antwort danken! Ich habe den von Ihnen angegebenen Code verwendet, der Fehler bleibt jedoch gleich. Hier ist der gesamte Code des Elements: http://pastebin.com/V2Zxu9S8 – BGoll

Verwandte Themen