Hidden-Attribut in Polymer 1.0
Habe ich nicht verwendet, Polymer, da die 0.4-0.5-ära und bin mit dem hidden-Attribut, wie so <my-element hidden="{{foo != bar}}"></my-element>
Nun in Polymer-1.0, ich sehe, die berechnete Werte aus einer Methode, die für alles, was nicht straight-up-ein boolescher Wert.
Ich habe meinen code wie folgt:
<my-element hidden="{{_computeHidden()}}"></my-element>
Und dann in den script Abschnitt:
Polymer({
is: 'super-element',
properties: {...},
_computeHidden: function(){
console.log('its being called, mkay');
return !(foo == bar);
}
});
Nun in der Konsole die Meldung kommt zweimal nach Aktualisierung der Seite, aber wenn der Wert der foo
ändert, wird das element nicht verschwindet. Was mache ich falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, es gibt zwei Probleme. Als Maria Notizen, die Sie haben, um Ihre
_computeHidden
Methode gebunden Parameter reagiert, um die Polymer-Benachrichtigungen. So, beidefoo
undbar
muss erklärt werden, wie Eigenschaften, die auf das element.Weiteres Problem ist, dass "versteckte" ist ein boolean-Attribut, was bedeutet, dass seine Anwesenheit zeigt an, dass das element soll ausgeblendet werden. In Polymer 1.0, mit
$
imhidden$=
änderungen versteckt, die in eine Eigenschaft verbindlich und wird Behandlung von strings. Ohne$
,hidden=
bewerten nur raw boolean.hidden
ist nicht auf der Liste für die erforderlichen$
im nativen html-Attribute, so ist die Wahl bis zu Ihnen.Mit diesem annotiertes Attribut Bindung, "hidden" erscheint auf dem element nur dann, wenn Ihre berechnete Wert truthy, das ist das Verhalten, das Sie möchten. Mit einem einfachen "=" Bindung "hidden" wird auch dann angezeigt, wenn die Funktion gibt true zurück, oder null, oder jeder andere Wert.
"hidden" will appear on the element only if your computed value is truthy
ich habe versucht, herauszufinden, wie man bedingt gelten ein Attribut den ganzen Nachmittag und die docs sind offenbar falsch.Wenn Sie möchten, dass für das auslösen der Neuberechnung Ihrer Funktion als
foo
änderungen, die Sie haben, um sicherzustellen, dassfoo
wird die Immobilie übergeben und in der Funktion als argument. Hier ist ein kleines Beispiel.Beachten Sie, dass das binden an die Attribute, die Sie verwenden sollten
$=
.$=
. Verwenden Sie es nur für die Bindung mit booleschen Attributen.$=
ist für boolean-Attribute. Vielmehr ist es für alle Attribut-Bindungen (im Gegensatz zu property-bindings). Sie würde es auch verwenden, fürclass
oderhref
zum Beispiel. Wieder haben Sie einen Blick auf die docs$=
ist nicht nur für "boolean-Attribute", aber auch überall dort, wo "native Bindungen" erforderlich sind (z.B. "style" und "class"). Hier ist ein mehr-präzise link in der Dokumentation. Sie sind auch direkt über die dynamische Bindung. Ich werde aktualisieren, meine Antwort ist ein klares Beispiel für Najm.