我正在使用聚合物,我很困惑至於什麼時候應該使用什麼類型的綁定。例如說我有以下代碼:聚合物添加事件監聽器
<body unresolved touch-action="auto">
<my-app></my-app>
<polymer-element name="my-app">
<template>
<core-drawer-panel id="drawerPanel">
<core-header-panel drawer id="drawer" mode="seamed">
<core-toolbar id="navheader">
<span>My Site</span>
</core-toolbar>
<core-menu selected="0" selectedItem="{{selectedMenu}}">
<paper-item icon="home" label="One"></paper-item>
<paper-item icon="today" label="Two"></paper-item>
</core-menu>
</core-header-panel>
<core-header-panel main mode="seamed">
<core-toolbar id="mainheader">
<paper-icon-button id="navicon" icon="menu"></paper-icon-button>
<paper-icon-button id="back" icon="arrow-back"></paper-icon-button>
<span flex>{{selectedMenu.label}}</span>
</core-toolbar>
<div class="content">
Content goes here!
</div>
</core-header-panel>
</core-drawer-panel>
</template>
<script>
Polymer('my-app', function(){
});
</script>
</polymer-element>
</body>
在過去,我沒有在這個polymer-element
代碼,而只是直接在代碼。然後,我可以做的東西,如:
var navicon = document.getElementById('navicon');
var back = document.getElementById('back');
var drawerPanel = document.getElementById('drawerPanel');
navicon.addEventListener('click', function(){
drawerPanel.togglePanel();
});
back.addEventListener('click', function(){
window.history.back();
});
但是,我不知道我應該怎麼做這個polymer-element
內。
此外,我曾使用document.addEventListener('polymer-ready', function(){ ... });
來確保元素在初始化之前被加載。我如何正確地做到這一點?
我正在使用如我的元素'的文件定義一些功能特性.querySelector(「core-menu」)',使用'this。$。elementId'確實有效。謝謝! – jdepypere
是的,'document'始終指向根文檔(在所有Shadow DOM之外),即使在Polymer腳本代碼中也是如此。如果你真的想要你可以使用'this.shadowRoots ['my-app']。querySelector(...)',但是'this。$'更具慣用和DRY。 – CletusW