Polymer 从聚合物对象属性值设置属性
我有一个元素,我把它和它的数据放在它的对象中Polymer 从聚合物对象属性值设置属性,polymer,polymer-1.0,Polymer,Polymer 1.0,我有一个元素,我把它和它的数据放在它的对象中 <my-element data="{{item.content}}"></my-element> 我还必须单击子元素上的handler,它应该切换布尔值 _handleClickBlock: function () { this.data.active = !this.data.active; } 我需要将元素上的[active]属性设置为data.active值并每次进行更改,因为我在CSS样式中使用它,如:hos
<my-element data="{{item.content}}"></my-element>
我还必须单击子元素上的handler,它应该切换布尔值
_handleClickBlock: function () {
this.data.active = !this.data.active;
}
我需要将元素上的[active]属性设置为data.active
值并每次进行更改,因为我在CSS样式中使用它,如:host[active]…
我怎样才能做到呢?我在事件处理程序中尝试了this.setAttribute('active',this.data.active)
,但它只更改了一次值;控制台日志正在切换
编辑:
我已尝试使用此代码:
observers: [
'_activeChange(data.active)'
],
_activeChange: function(newValue) {
this.active = newValue;
console.log("change");
},
_handleClickBlock: function () {
console.log("------ click");
this.data.active = !this.data.active;
console.log(this.data.active);
}
但在我的控制台中,输出只是这个,所以不调用观察器
------ click
false
------ click
true
尝试将“active”作为属性包含在my元素中,并将reflectToAttribute设置为true
properties: {
data:{...}
active: {
type: Boolean,
reflectToAttribute: true
}
}
observers: [
'_activeChange(data.active)'
],
_activeChange: function(newValue) {
this.active = newValue;
}
编辑:请检查如何更改路径,以便通知观察者。您需要更新data.active,如下所示
this.set('data.active', !this.data.active);
下面是jsbin:
我已将编辑添加到我的问题中。我以前尝试过这个解决方案,但“观察者”似乎不起作用。它只在页面加载时工作一次。
this.set('data.active', !this.data.active);