Polymer 0.9"过滤器"?

时间:2015-05-23 12:49:07

标签: polymer

在0.5中,可以添加JS函数,如:

PolymerExpressions.prototype.timeofdate = function(input) {
 if(input) {
   return input.substring(11,16)
}

(从&#34提取小时:分钟; MongoDB-timestamp"如2014-10-04T12:34:56 + 02:00)

并将其与管道变量一起使用,如:

{{starts | timeofdate}}

当我尝试将上面的代码升级到0.9时,我不得不改为创建这个元素:

<script>
  Polymer({
    is: 'x-substr',
    properties: {
      start: Number,
      end: Number,
    },
    attached: function() {
      this.innerHTML = this.innerHTML.substring(this.start, this.end);
    }
  });
</script>

并像这样使用它:

<x-substr start="11" end="16">{{starts}}</x-substr>

(使用&#34;附加&#34;回调代替&#34;准备就绪&#34;,如果您应该将此元素用于任何数据绑定)

这是&#34;正确的方式&#34;在Polymer 0.9 +?

中进行如上所述的过滤功能

1 个答案:

答案 0 :(得分:1)

最接近0.5的滤镜行为是0.9+中的computed bindings

对于你的例子,这将是这样的:

<dom-module id="...">
  <template>
    ...
    <span>{{timeofdate(starts)}}</span>
    ...
   </template>
<dom-module>

Polymer({
  ...
  timeofdate: function (input) {
    return input.substring(11,16);
  }
  ...
});

如果您在多个地方需要这段时间,也可以改为computed property

<dom-module id="...">
  <template>
    ...
    <span>{{starttime}}</span>
    ...
   </template>
<dom-module>

Polymer({
  ...
  properties: {
    starts: String,
    starttime: {
      type: String,
      computed: 'timeofdate(starts)'
    }
  },
  timeofdate: function (input) {
    return input.substring(11,16);
  }
  ...
});