Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 聚合物计算函数刷新值_Javascript_Data Binding_Polymer - Fatal编程技术网

Javascript 聚合物计算函数刷新值

Javascript 聚合物计算函数刷新值,javascript,data-binding,polymer,Javascript,Data Binding,Polymer,您好,我有一个关于刷新函数输出的问题,该函数用作绑定到属性 假设我有一部分html,我想在特定情况下隐藏它: <div hidden$="[[hideElement()]]"> 我看到的是,在这个函数的输出改变之后,元素并没有隐藏 我可能遗漏了一些内容,但我不确定遗漏了什么。问题是隐藏的属性不会再次调用隐藏元素,因此隐藏的值永远不会更改 您应该将hidden绑定到布尔值,然后更改该布尔值。这样,每当布尔属性改变hidden的值时,也会改变 <div hidden$="[[hi

您好,我有一个关于刷新函数输出的问题,该函数用作绑定到属性

假设我有一部分html,我想在特定情况下隐藏它:

<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;
    }
})