2015-06-05 8 views
8

Z mojego ostatniego pytania zrozumiałem, że konkatenacja ciągów nie jest dozwolona z wersją 0.9 i wyższą (obecnie migruję do wersji 1.0).Jak mogę dynamicznie ustawić nazwę klasy?

Muszę raczej zawijać każdą zmienną wewnątrz oddzielnego elementu HTML.

Są jednak momenty, w których muszę dynamicznie przypisać wartość wartościami atrybutu href lub class. Nie mogę sprawić, aby działał bezpośrednio, jak poniżej:

<a href="http://example.com/user/{{userid}}">Link text</a> 

od 1.0 nie pozwoli na połączenie ciągów!

Proszę zobaczyć opisy poniżej. Próbuję przekazać wartość atrybutu z mojego index.html, który z kolei powinien zastąpić wartość w atrybucie class wewnątrz mojego elementu niestandardowego. Ale to nie działa i rozumiem dlaczego.

<dom-module id="multi-color-bar-chart"> 
 
    <template> 
 
    <div id="chart"> 
 
      <p>{{title}}</p> 
 
      <div class="{{v1bg}}"> 
 
       <!-- I want {{v1bg}} to be replaced by value sent from index.html --> 
 
       <span>{{value1}}</span>% 
 
      </div> 
 
      <div class="v2" style="background:#ffcc00;"> 
 
       <span>{{value2}}</span>% 
 
      </div> 
 
      <div class="v3" style="background:#369925;"> 
 
       <span>{{value3}}</span>% 
 
      </div> 
 
      <div class="clear"></div> 
 
     </div> 
 
     <div class="clear"></div> 
 
    </template> 
 
    <script> 
 
     (function() { 
 
      Polymer({ 
 
       is: 'multi-color-bar-chart', //registration of element 
 
       properties: { 
 
        title: { type: String }, 
 
        value1: { type: String }, 
 
        value2: { type: String }, 
 
        value3: { type: String }, 
 
        v1bg: { type: String } 
 
       } 
 
      }); 
 
     })(); 
 
    </script> 
 
</dom-module>

Oto urywek w index.html

<multi-color-bar-chart 
 
    title="Annual" 
 
    value1="45.5" 
 
    value2="22.3" 
 
    value3="32.2" 
 
    v1bg="#ff0000"> 
 
    ... 
 
    ... 
 
</multi-color-bar-chart>

jestem przekazując kod szesnastkowy #ff0000 poprzez atrybut v1bg który mam zamiar faktycznie zastąpić właściwość wewnątrz elementu.

Nie wiem jeszcze, czy jest do tego odpowiednia robota. Może użyłem document.querySelector(), ale jeszcze tego nie próbowałem. Jeśli istnieje bezpośrednie podejście HTML, byłoby wspaniale.

Odpowiedz

16

Wypróbuj class$="{{v1bg}}", ponieważ spowoduje to połączenie z atrybutem class, a nie z właściwością class.

https://www.polymer-project.org/1.0/docs/devguide/data-binding.html#attribute-binding

+0

Właśnie zauważyłem href $ nie działa jak klasa $. Próbowałem ..., ale to nie działa. Przykro nam z powodu pytań zwrotnych. Kompletny nowicjusz do Polymer :) –

+1

'href $ =" {{value}} "' powinien działać, ale jak już napisałeś przed konkatenacją ciągów nie działa, więc nie byłbyś w stanie zrobić 'href $ =" http://example.com/{{value}} "'. Możesz jednak zrobić coś podobnego: https://www.polymer-project.org/1.0/docs/devguide/properties.html#computed-properties – Zikes

+1

Łączenie ciągów działa w Polymer 1.2, powinieneś uaktualnić. Zobacz: https://blog.polymer-project.org/releases/2015/11/02/release-1.2.0/ – Whyser

Powiązane problemy