2015-07-19 82 views
1

有誰能夠解釋爲什麼下列2段不具有同樣的效果/我是什麼在第2做錯了:聚合物1.0自定義元素無法正常工作

工作(得到了地圖上的標記) :

<dom-module id="odl-map"> 
<template> 
    <leaflet-map id="innerMap" style="width:100%;height:100%;" latitude="50.92062" longitude="13.34081" zoom="10"> 
     <leaflet-marker latitude="50.92062" longitude="13.34081"></leaflet-marker> 
    </leaflet-map> 
</template> 
<script> 
Polymer({ 
    is: "odl-map", 
    ready: function() { 
     L.Icon.Default.imagePath="./public/components/leaflet/dist/images"; 
    } 
}); 
</script> 

但如果我只是含瓣葉標記的自定義元素取代瓣葉標記它不工作:

<dom-module id="contact-map-item"> 
<template> 
    <leaflet-marker latitude="50.92062" longitude="13.34081"></leaflet-marker> 
</template> 
<script> 
    Polymer({ 
     is: "contact-map-item" 
    }) 
</script> 
</dom-module> 
<dom-module id="odl-map"> 
    <template> 
     <leaflet-map id="innerMap" style="width:100%;height:100%;" latitude="50.92062" longitude="13.34081" zoom="10"> 
      <contact-map-item></contact-map-item> 
     </leaflet-map> 
    </template> 
    <script> 
    Polymer({ 
     is: "odl-map", 
     ready: function() { 
      L.Icon.Default.imagePath="./public/components/leaflet/dist/images"; 
     } 
    }); 
    </script> 
</dom-module> 

回答

1

終於有了一個相當乾淨的解決方案。問題在於地圖在完成加載時(Leaflet-core.html,方法registerMapOnChildren)將其自身填充爲「容器」。所以我不得不一個容器對象添加到我的聯繫人地圖項目,並把它傳遞給標記:

<dom-module id="contact-map-item"> 
<template> 
    <leaflet-marker container="{{container}}" latitude="50.92062" longitude="13.34081"></leaflet-marker> 
</template> 
<script> 
    Polymer({ 
     is: "contact-map-item", 
     properties: {container : Object} 
    }); 
</script> 
</template>