2014-10-31 43 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