“问题”是乔丹跑步指出,您的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中的情况不同,正如你指出的那样)。我会尝试更新这个答案。 –