2014-11-24 45 views
0

我正在寫我的自定義聚合物元素。我需要爲那個元素定義一個方法toggle。每當我在主HTML中創建該元素時,我應該可以調用該方法。以下代碼不起作用。我究竟做錯了什麼?如何創建自定義聚合物元素的方法並在主應用程序中調用它?

loader.html

<link rel="import" href="../polymer/polymer.html"> 
<link rel="import" href="../paper-dialog/paper-dialog.html"> 
<script type="text/javascript" src="../../javascripts/jquery.js"></script> 
<polymer-element name="loader"> 
    <template> 
     <paper-dialog opened id="loadingPage">"{{message}}"</paper-dialog> 
    </template> 
    <script> 
     Polymer({ 
      message: "Activating", 
      toggle: function() { 
       //jQ("#loadingPage").toggle(); 
       console.log("Internal toggle"); 
      } 
     }); 
    </script> 
</polymer-element> 

的Index.html

<loader id="activationLoading"> 
     </loader> 
<paper-button id="act-submit" raised> 
         Continue 
        </paper-button> 

index.js

jQ('#act-submit').click(function() { 
      console.log("toggled"); 
      jQ('#activationLoading').toggle(); 
     }); 

附: - 如果我將方法名稱從toggle更改爲foo,則會引發javascript錯誤。

回答

1

我認爲這是你在找什麼

button = document.querySelector("#act-submit"); 
button.addEventListener('click', function() { 
    document.querySelector("#activationLoading").toggle(); 
}); 

編輯:回首你的元素後

<link rel="import" href="../polymer/polymer.html"> 
<link rel="import" href="../paper-dialog/paper-dialog.html"> 
<script type="text/javascript" src="../../javascripts/jquery.js"></script> 
<polymer-element name="loader-element"> 
    <template> 
     <paper-dialog opened id="loadingPage">"{{message}}"</paper-dialog> 
    </template> 
    <script> 
     Polymer('loader-element', { 
     message: "Activating", 
     toggle: function() { 
      //jQ("#loadingPage").toggle(); 
      console.log("Internal toggle"); 
     } 
     }); 
    </script> 
</polymer-element> 

我看到你把它命名爲「裝載機」的所有聚合物分子必須有a - 在名稱中,所以我在腳本部分中將第二個名稱重命名爲「loader-element」,但沒有將名稱分配給腳本。如果您更改該部分以匹配下面的代碼,則該元素應按預期運行。

 Polymer('loader-element', { 
     message: "Activating", 
     toggle: function() { 
      //jQ("#loadingPage").toggle(); 
      console.log("Internal toggle"); 
     } 
     }); 

就像一個觀察我不知道,但我不認爲jquery在聚合物元素的作品。

+0

不是。事情是,我可以在日誌中看到「切換」,即「click」事件已經被捕獲。問題出在'loader'的'toggle'方法。 – Heisenberg 2014-11-24 13:42:08

+0

更新了我的答案。 – 2014-11-24 15:50:17

+0

現在明白了。當'paper-dialog'被創建爲core-overlay陰影根目錄下的shadow DOM時,Jquery無法工作。 – Heisenberg 2014-11-25 10:45:13

相關問題