我正在使用聚合物,我很困惑至于什么时候应该使用什么类型的绑定。例如说我有以下代码:聚合物添加事件监听器
<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