您不能仅通过使用任意元素的 ID 调用 Polymer()
函数来定义 Polymer 组件。必须要创建一个包含按钮和处理程序代码的 Polymer 元素,如下所示:
<body unresolved>
<polymer-element name="link-button">
<template>
<paper-button raisedButton id="test" class="colored"
label="Click" link="http://twitter.com"
on-click="{{ goLink }}">
</paper-button>
</template>
<script>
Polymer('link-button', {
goLink: function(e) {
window.location.href = e.target.getAttribute('link');
}
})
</script>
</polymer-element>
<link-button></link-button>
</body>
或者您需要在自动绑定模板中包装按钮:
<body unresolved>
<template id="bind" is="auto-binding">
<paper-button raisedButton id="test" class="colored"
label="Click" link="http://twitter.com"
on-click="{{ goLink }}">
</paper-button>
</template>
<script>
var bind = document.querySelector('#bind');
bind.goLink = function(e) {
window.location.href = e.target.getAttribute('link');
}
</script>
</body>
使用第一个版本,您可以将硬编码的链接(以及可能的其他值)转换为属性,从而创建可重用的link-button
元素。
顺便说一下,您可以使用'on-tap'或'on-click'。当您用鼠标点击按钮时,两个事件都会被触发。
编辑:
如果您只想要花哨的纸质按钮,您可以通过向元素添加事件侦听器来省去任何特定于Polymer的编程:
<paper-button raisedButton id="test" class="colored"
label="Click" link="http://twitter.com">
</paper-button>
<script>
document.querySelector('#test').addEventListener('click', function(e) {
window.location.href = e.target.getAttribute('link');
})
</script>
如果您只关注组件消费者方面,那么您就会错过Polymer(以及Web组件)的很多强大功能。
on-tap
一起使用。 - Cilenco