2017-12-15 1 views
0

Ich habe diese einfache Eigenschaft gemacht (Polymer 2.x):Polymer Eigenschaft nicht, wenn gesetzt von Javascript Aktualisierung

static get properties() { 
    return { 
     bpm: { 
      type: Number, 
      value:() => { 
       return 0 
      }, 
      observer: "_bpm" 
     } 
    } 
} 

Ich habe versucht, es zu aktualisieren, indem this.bpm = 60; in einer Funktion aufgerufen, wenn eine Schaltfläche klicken. Wenn ich den Wert mit console.log(this.bpm); ausgabe, wird der korrekte Wert angezeigt, aber meine Überschrift <h2 id="bpm">[[bpm]]</h2> wird nicht aktualisiert und der Beobachter wird nicht aufgerufen.
Wenn bpm mit etwas wie <paper-slider value="{{bpm}}"></paper-slider> eingestellt ist, funktioniert es.

Was mache ich falsch? Danke für Ihre Hilfe!

+0

versuchen Sie 'this.set ('bpm', 60)' anstelle von 'this.bpm = 60' zu verwenden. Verwenden Sie die set-Methode, um eine beobachtbare Änderung vorzunehmen. Ihr Beobachter funktioniert korrekt, aber Sie können auch definieren wie 'static get observators() {return ['_bpm (bpm)']}' – HakanC

+0

this.set funktioniert nicht: 'this.set ist keine Funktion'. Der Beobachter funktioniert leider auch nicht. –

+1

Es ist ein seltsames Problem, das ich versucht habe, es zu reproduzieren, aber ohne Erfolg, kannst du all deinen Code hinzufügen? Ich habe eine funktionierende [jsfiddle] (https://jsfiddle.net/caribouflex/8qj2t1r3/) erstellt, die dir vielleicht helfen kann (öffne sie auf Chrome). – Caribouflex

Antwort

1

Es wird leichter für die Community zu wissen, dass diese Frage in den Kommentaren der Anfragen beantwortet wurde.

Anfangsproblem: Der Bindungswert wurde nicht aktualisiert, da bpm Eigenschaft von einer Funktion außerhalb des Elements festgelegt wurde.

Korrektur: Hier eine funktionierende JSFiddle (in Chrom zu verwenden) verwendet, um zu demonstrieren, wie Sie die Bindung verwenden.

Verwandte Themen