使用Polymer绑定到方法

时间:2014-02-26 02:18:14

标签: javascript html5 model-view-controller polymer

使用Polymer时,是否可以绑定方法而不是值? E.g。

<div>{{someMethod()}}</div>

<div>{{someMethod}}</div>

从来源和文档来看,事实并非如此。只是想确认一下。

1 个答案:

答案 0 :(得分:3)

不是直接的,但有几种方法可能达到你想要的效果。我假设您想要转换数据......?

  1. 将属性定义为 ES5 getter

    有点作弊,但您可以将属性定义为getter,然后围绕返回的值包装自定义逻辑。

    <div>{{likes}}</div>
    
    Polymer('my-tag', {
      firstName: 'John',
      get likes() {
        return this.firstName + ' ' + lastName + ' likes bread';
      }
    });
    

    演示:http://jsbin.com/nuyuqote/3/edit

    注意:谨慎使用此选购件。绑定到getter在Object.observe()下不起作用,如果支持,Polymer将使用它。请参阅下面的Scott's comment

  2. 自定义过滤器

    尚未记录:(

    <div>{{'thingy' | upperCaseFilter}}</div>
    
    Polymer('my-tag', {
      upperCaseFilter: function(value) {
        return value.toUpperCase();
      }
    });
    

    演示:http://jsbin.com/nuyuqote/1/edit

  3. <强> <prop>Changed

    请参阅下面的Scott's comment

  4. BTW,我们在Polymer中没有像{{someMethod()}}这样的东西的一个原因是执行JavaScript。这通常被认为是做onclick="someMethod()"之类的反模式,因为很容易使自己受到XSS攻击之类的攻击。<​​/ p>