aktualisieren
Ab Polymer 1.2.0, können Sie jetzt Compound Bindings zu
Stringliterale und Bindungen in einer einzigen Eigenschaft Bindung oder Textinhalt
wie so verbindlich kombinieren :
<img src$="https://www.example.com/profiles/{{userId}}.jpg">
<span>Name: {{lastname}}, {{firstname}}</span>
und Ihr Beispiel
<div class$="avatar {{color}}"></div>
so ist dies kein Thema mehr.
Die folgende Antwort bezieht sich nur auf Polymerversionen vor 1.2
Wenn Sie dies viel tun, bis diese Funktion verfügbar werden, die hoffentlich ist soon Sie nur die Funktion an einem Ort als Eigenschaft Polymer.Base, die alle davon hat definieren könnte seine Eigenschaften von allen Polymerelemente geerbt
//TODO remove this later then polymer has better template and binding features.
// make sure to find all instances of {{join(in polymer templates to fix them
Polymer.Base.join = function() { return [].join.call(arguments, '');}
und rufen dann etwa so:
<div class$="{{join('avatar', ' ', color)}}"></div>
dann, wenn es richtig durch Polymer eingeführt wird, entfernen, dass nur eine Zeile, und ersetzen
{{join('avatar', color)}}
mit
avatar {{color}}
ich dieser verwende viel im Moment, nicht nur für die Klassen in eine Kombination, sondern auch Dinge wie Pfadnamen, Verbinden mit einem ‚/‘, und nur allgemeinen Textinhalt, also benutze ich stattdessen das erste Argument als Leim.
Polymer.Base.join = function() {
var glue = arguments[0];
var strings = [].slice.call(arguments, 1);
return [].join.call(strings, glue);
}
oder wenn Sie es6 Features wie rest arguments
Polymer.base.join = (glue, ...strings) => strings.join(glue);
zu tun Sachen wie
<div class$="{{join(' ', 'avatar', color)}}"></div>
<img src="{{join('/', path, to, image.jpg)}}">
<span>{{join(' ', 'hi', name)}}</span>
nur die Grund
Polymer.Base.join = (...args) => args.join('');
<div class$="{{join('avatar', ' ', color)}}"></div>
Ich hatte Angst vor dieser Antwort können aber ich werde es akzeptieren, wie es nicht scheint eine bessere Problemumgehung. Vielen Dank! – fray88