索引不接收 polymer 中的影子根事件
Index does not receive shadow root events in polymer
我尝试根据在自定义元素中触发的事件显示属于我的 index.html 文件的工具栏。我尝试按照此处官方文档中给出的示例进行操作:https://www.polymer-project.org/1.0/docs/devguide/events#custom-events
但它不起作用...似乎我的听众从未收到事件
我的自定义元素:
<dom-module id="page2">
<template>
...
some HTML code here
...
</template>
<script>
Polymer({
is: 'page2',
rowClicked: function (e) {
this.fire('displayMenu');
}
});
</script>
</dom-module>
在我的索引中:
<page2></page2>
<script>
document.addEventListener('WebComponentsReady', function () {
document.querySelector('page2').addEventListener('displayMenu', function () {
console.log('foo');
});
});
</script>
</body>
所以是的,没有任何反应,我的控制台中从来没有 "foo"...
你的JS看起来是正确的,但是元素名称是错误的。如 Polymer docs:
所示
By specification, the custom element's name must contain a dash (-).
因此,"page2"
将注册失败并出现以下错误 (demo):
"Error: Failed to execute 'registerElement' on 'Document': Registration failed for type 'page2'. The type name is invalid.
如果您重命名该元素以包含破折号(例如,"x-page2"),您应该会看到您的示例工作:
<head>
<base href="https://polygit.org/polymer+:master/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="polymer/polymer.html">
</head>
<body>
<x-page2></x-page2>
<script>
document.addEventListener('WebComponentsReady', function() {
document.querySelector('x-page2').addEventListener('displayMenu', function() {
console.log('foo');
});
});
</script>
<dom-module id="x-page2">
<template>
<button on-click="rowClicked">click me to fire event</button>
</template>
<script>
HTMLImports.whenReady(function() {
Polymer({
is: 'x-page2',
rowClicked: function() {
this.fire('displayMenu');
}
});
});
</script>
</dom-module>
</body>
我尝试根据在自定义元素中触发的事件显示属于我的 index.html 文件的工具栏。我尝试按照此处官方文档中给出的示例进行操作:https://www.polymer-project.org/1.0/docs/devguide/events#custom-events
但它不起作用...似乎我的听众从未收到事件
我的自定义元素:
<dom-module id="page2">
<template>
...
some HTML code here
...
</template>
<script>
Polymer({
is: 'page2',
rowClicked: function (e) {
this.fire('displayMenu');
}
});
</script>
</dom-module>
在我的索引中:
<page2></page2>
<script>
document.addEventListener('WebComponentsReady', function () {
document.querySelector('page2').addEventListener('displayMenu', function () {
console.log('foo');
});
});
</script>
</body>
所以是的,没有任何反应,我的控制台中从来没有 "foo"...
你的JS看起来是正确的,但是元素名称是错误的。如 Polymer docs:
所示By specification, the custom element's name must contain a dash (-).
因此,"page2"
将注册失败并出现以下错误 (demo):
"Error: Failed to execute 'registerElement' on 'Document': Registration failed for type 'page2'. The type name is invalid.
如果您重命名该元素以包含破折号(例如,"x-page2"),您应该会看到您的示例工作:
<head>
<base href="https://polygit.org/polymer+:master/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="polymer/polymer.html">
</head>
<body>
<x-page2></x-page2>
<script>
document.addEventListener('WebComponentsReady', function() {
document.querySelector('x-page2').addEventListener('displayMenu', function() {
console.log('foo');
});
});
</script>
<dom-module id="x-page2">
<template>
<button on-click="rowClicked">click me to fire event</button>
</template>
<script>
HTMLImports.whenReady(function() {
Polymer({
is: 'x-page2',
rowClicked: function() {
this.fire('displayMenu');
}
});
});
</script>
</dom-module>
</body>