2016-08-10 56 views
0

我是新的聚合物,我有一個包含一個簡單的疊加,我想一個DOM-repat自定義元素點擊關閉按鈕時該套印關閉聚合物手柄click事件

這是定製元素

<link rel="import" href="../../bower_components/polymer/polymer.html"> 
 
<link rel="import" href="../../bower_components/paper-styles/typography.html"> 
 
<link rel="import" href="../overlay-layer/simple-overlay.html"> 
 

 
<dom-module is="feed-bdy"> 
 

 
    
 
    <template items="{{items}}"> 
 
     <style include="iron-flex iron-flex-alignment" > 
 
     :host{ 
 
     --paper-button-ink-color: var(--paper-pink-a200); 
 
     --paper-button{ 
 
      background-color: red !important; 
 
      color: red; 
 
     } 
 

 
     } 
 
     .custom{ 
 
     color: red; 
 
     } 
 
     .content-bdy{ 
 
     min-height: 120px; 
 
     } 
 
     .scrollable{ 
 
      @apply(--layout-scroll); 
 
      max-width: 75%; 
 
    
 
     } 
 
    
 
    </style> 
 
     <div class="card-content"> 
 
     <div class="ar-header"> 
 
      <h3><a href="#"> [[items.fields.title]]</a></h3> 
 
     </div> 
 
     <div class="content-bdy"></div> 
 
     </div> 
 
     [[_renderHTML(items)]] 
 
     <div class="card-actions"> 
 
     <paper-button class="custom" id="ar-[[items.fields.articleId]]" on-click="_openOverlay">إقراء المزيد !</paper-button> 
 
     <simple-overlay id="backdrop-[[items.fields.articleId]]" data-ar="backdrop-[[items.fields.articleId]]" with-backdrop class="layout scrollable"> 
 
      
 
      [[_renderFullArticle(items)]] 
 
     
 
      <button id="dd">Close</button> 
 
      </simple-overlay> 
 
     <paper-button> 
 
      شارك 
 
      <iron-icon icon="reply"></iron-icon> 
 
     </paper-button> 
 
     </div> 
 

 
    </template> 
 
    
 
    <script> 
 
     Polymer({ 
 
     is: 'feed-bdy', 
 
     listeners :{ 
 
     'dd.click':'_closeOverlay' 
 
     }, 
 
     _renderHTML: function(items) { 
 
     // firstp to get only the first pargarph to put in the home page 
 
     var ss= items.fields.body; 
 
     //console.log(this.$$(".card-content")); 
 
     var firstp = ss.substring(0,ss.search("</p>")+4); 
 
     this.$$(".content-bdy").innerHTML += firstp; 
 
     
 
     
 
     }, 
 
     _renderFullArticle : function(items){ 
 
     this.$$("simple-overlay").innerHTML +=items.fields.body; 
 

 
     }, 
 
     _toggle : function(e){ 
 
     var id = Polymer.dom(e).localTarget.title; 
 
     //console.log(id); 
 
     var moreInfo = document.getElementById(id); 
 
     // console.log(moreInfo); 
 
     var iconButton = Polymer.dom(e).localTarget; 
 
      iconButton.icon = moreInfo.opened ? 'hardware:keyboard-arrow-up' 
 
               : 'hardware:keyboard-arrow-down'; 
 
      moreInfo.toggle(); 
 
     }, 
 
     _openOverlay : function(e){ 
 
     //console.log('calling _openOverlay'); 
 
     var id = Polymer.dom(e).localTarget.id.split('ar-')[1]; 
 
     var dd = document.getElementById('backdrop-'+id); 
 
     dd.open(); 
 
     }, 
 
     _closeOverlay : function(e){ 
 
     console.log(Polymer.dom(e)); 
 
     console.log('calling _openOverlay'); 
 
     var id = Polymer.dom(e).localTarget.id.split('ar-')[1]; 
 
     // var dd = document.getElementById('backdrop-'+id); 
 
     /// dd.close(); 
 
     } 
 
     }); 
 
    </script> 
 
</dom-module>

並在index.html的

<div class="video layout horizontal around-justified wrap" > 
 
         
 
    <template is="dom-repeat" items="[[ajaxResponse]]" > 
 
    
 
    <paper-card image="[[item.fields.image]]" class="flex-auto" wide-layout$="{{wide}}"> 
 
      
 

 
     <feed-bdy items="[[item]]"></feed-bdy> 
 
    </paper-card> 
 
     </template> 
 
     </div>

所以,當點擊關閉按鈕的_closeOverlay應該被解僱,我試圖安慰的消息,你可以看到,但沒有事件被觸發的任何意見

+0

討厭這麼說,但你在這段代碼中遇到了很多不利的事情。 1.你在模板重複中有你的風格標籤。聽衆不像你如何定義他們一樣工作。 3.在按鈕元素上添加on-tap =「_ closeOverlay」事件處理程序。 4.您的卡片操作元素應該很可能是第一類自定義聚合物元素,因此在您的closeOverlay中,您可以在該簡單疊加元素上進行選擇,而無需「附加」元數據以定位您正在討論的疊加層。現在你的近距離需要聰明才能知道目標的重疊。 – getbuckts

+0

@getbuckts感謝您的回答,1-我刪除了樣式標籤到索引 2-我嘗試了所有不同的方式來接收事件,但都沒有工作 3事件添加on-tap處理程序沒有事件被解僱了 4我真的不明白是什麼問題 – user3853257

回答

0

你只是讓您的index.html文件的一部分,但是您在<template is="dom-bind">內顯示的內容?

聚合物不適用於數據綁定和事件等,除非這些東西是。

這些天(關於Google I/O 2016)和關於延遲加載等的討論我已經停止使用dom綁定方法,而是擁有一個自定義元素,然後包含所有功能,包括樣式。

+0

我不想把所有的索引文件代碼這是插入內容的部分,所以任何建議來解決這個問題? – user3853257

+0

@ user3853257 - 我回復中的模板標籤被stackoverflow的格式隱藏。現在它更有意義嗎? – akc42