2014-10-31 44 views
3

我有四个按钮,并试图连接声明处理程序的各种方法:Polymer.js附加处理程序纸按钮在标准HTML DOM

<paper-button id="btnEnter" class="enabled" raised roll="button" on-tap="lm.LoaderActionEnter">Enter</paper-button> 
<paper-button id="btnRW" class="disabled" raised roll="button"> 
    <core-icon icon="av:fast-rewind" on-tap="lm.LoaderActionRW()"></core-icon> 
</paper-button> 
<paper-button id="btnPause" class="enabled" raised roll="button"> 
    <core-icon icon="av:pause-circle-outline" onclick="lm.LoaderActionPause()"></core-icon> 
</paper-button> 
<paper-button id="btnFF" class="disabled" raised roll="button"> 
    <core-icon icon="av:fast-forward" on-tap="{{lm.LoaderActionFF}}"></core-icon> 
</paper-button> 

是唯一可行的是的onclick标准=“处理器( )”。我假设on-tap =“处理程序”将是要走的路?上面的代码在正常的index.html页面中,在页面的正常流程内。 JavaScript和聚合物代码在主页面呈现(启动页面)后延迟加载。

这样做的最好方法是什么?我只找到使用“{{处理程序}}”的演示,但您将如何设置数据绑定?

回答

4

on-tap="{{handler}}"语法是聚合物特定的;它是只有去聚合物元素的模板内或在auto-binding template

onclick属性的工作原理是因为它内置在DOM中,但我们通常建议不要使用click事件,因为它会在某些移动浏览器上引入滞后时间。

所以,如果你不使用自动绑定模板为您的索引页,我建议势在必行这样做,而不是:

Polymer.addEventListener(document.getElementById('btnEnter'), 'tap', lm.LoaderActionEnter);

你可能会问,为什么Polymer.addEventListener代替只是addEventListener?这是与Polymer手势库相关的便捷方法,该手势库生成tap手势。

调用Polymer.addEventListener确保所有设置都正确以生成所需的事件。 (例如,对于某些浏览器,您可能需要指定touch-action CSS属性来接收原始触摸事件。)

声明性使用处理程序注册的事件处理程序会自动通过此路径,因此大多数情况下使用聚合物,您不需要直接调用Polymer.addEventListener

+0

谢谢!聚合物问题在Stackoverflow上得到解答的速度和技巧令我印象深刻。迫不及待地想知道聚合物。 – user1541413 2014-11-02 14:52:25