Javascript 聚合物计算函数刷新值
您好,我有一个关于刷新函数输出的问题,该函数用作绑定到属性 假设我有一部分html,我想在特定情况下隐藏它:Javascript 聚合物计算函数刷新值,javascript,data-binding,polymer,Javascript,Data Binding,Polymer,您好,我有一个关于刷新函数输出的问题,该函数用作绑定到属性 假设我有一部分html,我想在特定情况下隐藏它: <div hidden$="[[hideElement()]]"> 我看到的是,在这个函数的输出改变之后,元素并没有隐藏 我可能遗漏了一些内容,但我不确定遗漏了什么。问题是隐藏的属性不会再次调用隐藏元素,因此隐藏的值永远不会更改 您应该将hidden绑定到布尔值,然后更改该布尔值。这样,每当布尔属性改变hidden的值时,也会改变 <div hidden$="[[hi
<div hidden$="[[hideElement()]]">
我看到的是,在这个函数的输出改变之后,元素并没有隐藏
我可能遗漏了一些内容,但我不确定遗漏了什么。问题是
隐藏的属性不会再次调用隐藏元素
,因此隐藏的值永远不会更改
您应该将hidden
绑定到布尔值,然后更改该布尔值。这样,每当布尔属性改变hidden的值时,
也会改变
<div hidden$="[[hideElement]]">
聚合物文档中对此进行了回答
计算绑定声明包括计算函数名,
后面是依赖项列表,在括号中
您的问题是,计算函数只被调用一次,但由于您没有提供任何参数,因此它无法知道将来函数值何时会更改。您需要包含一个属性作为依赖项,以便它知道函数值何时可能更改
例如:
<div hidden$="[[hideElement(deviceId)]]"></div>
如果查看其他聚合物元素,它们通常会调用函数\u ishiden
,而不是hideElement
,以指示它将采用真/假值
由于我们已经将deviceId
声明为一个字符串,这将大大简化您的hideElement函数<代码>“
,null
和未定义
都计算为false
properties:{
hideElement:{
type:Boolean
value:false
},
},
hideValue:function(){
if (this.deviceId == undefined) {
this.hideElement= false;
return;
}
else if (typeof this.deviceId === 'string' || this.deviceId instanceof String) {
this.hideElement=true;
return;
}
else {
this.hideElement=false;
return;
}
}
<div hidden$="[[hideElement(deviceId)]]"></div>
Polymer({
is: 'my-element',
properties: {
deviceId: String
},
hideElement: function(deviceId) {
return deviceId ? true : false;
}
})