「問題」是喬丹跑步指出,您的webcomponentsjs沒有加載。
真實情況是,如果沒有webcomponentsjs,就不能使用updateStyles
,這很不幸,因爲有些情況下您可能根本不需要它。
在這種情況下,你可以做 this.setAttribute('style', '--tool-colour: red');
但是,然後再次這將無法在需要webcomponentsjs的瀏覽器中工作。
我最終做了什麼創建了一個使用setAttributes(合併樣式)或updateStyles取決於可用的行爲。它的代碼看起來像這樣。
if (!window.ShadyCSS || (window.ShadyCSS && window.ShadyCSS.nativeCss === true)) {
var newStyleString = '';
for (var key in newStyle) {
if (newStyle.hasOwnProperty(key)) {
newStyleString += key + ': ' + newStyle[key] + ';';
}
}
this.setAttribute('style', newStyleString);
} else {
ShadyCSS.styleSubtree(this, newStyle);
}
因此,對於使用我只是寫this.updateStyles({'--tool-colour': 'green'});
爲我的行爲將覆蓋updateStyles
。
您可以在這裏找到的完整代碼 https://github.com/daKmoR/grain-update-inline-style-behavior。 這更多一點,因爲它也增加了對IE11的內聯樣式的支持。
如果你打開控制檯,你會看到幾個404錯誤的shadycss組件。我猜這與它有關。 –
不錯的地方。可能是因爲我剛剛添加到Polymer網站上的基本Plunker示例中,導致問題得以解決。我將不得不在本地環境中嘗試這個例子,在這個環境中,bower會希望確保依賴被加載(這與Plunker中的情況不同,正如你指出的那樣)。我會嘗試更新這個答案。 –