聚合物:在数据绑定表达式中使用函数

时间:2014-11-26 21:59:23

标签: polymer

我的Polymer元素的一个属性是时间戳:

Polymer({
  timestamp: null,
  ready: function () {
    this.timestamp = new Date().getTime();
  }
});

在我的标记中,我需要显示格式化的时间戳:

<template>
  timestamp={{getFormattedTimestamp()}}
</template>

,其中

getFormattedTimestamp: function () {
  return new Date(this.timestamp).toLocaleString('en-US', {timeZoneName: 'short'});
}

但上面的代码在this.timestamp更改时不会更新显示,因为当发生这种情况时,Polymer不知道它需要调用getFormattedTimestamp

我不能只将getFormattedTimestamp的内容放入数据绑定表达式中,因为它无法解析它,并且由于同样的原因我无法创建计算属性。

除了创建一个包含格式化时间戳的辅助成员变量并在时间戳发生变化时更新它时,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

标记中的函数必须将它们所依赖的属性作为参数引用(因为Polymer使用它们来确定何时更新它们)。

<template>
  timestamp={{getFormattedTimestamp(timestamp)}}
</template>

getFormattedTimestamp: function (timestamp) {
  return new Date(timestamp).toLocaleString('en-US', {timeZoneName: 'short'});
}

答案 1 :(得分:0)

您是否考虑过filter expressions

你可以这样:

<template>
  timestamp={{timestamp | getFormattedTimestamp }}
</template>