Uncaught ReferenceError drawer is not defined at HTMLElement.onclick in Polymer 2.0?
Uncaught ReferenceError drawer is not defined at HTMLElement.onclick in Polymer 2.0?
我是 Polymer 2.0 的新手,正在努力解决某些我似乎不理解的错误。
其中之一是:
Uncaught ReferenceError: drawer is not defined at HTMLElement.onclick
所以为了解释我的问题,我正在尝试使用 app-drawer
,它会在单击事件时从左向右滑动。但是点击事件returns出现上面的错误。如何确定抽屉已定义? (顺便说一句,我正在关注 app-layout
部分主网站中提供的代码片段。- https://www.webcomponents.org/element/PolymerElements/app-layout)。
这是我的代码:
<app-header reveals>
<app-toolbar>
<paper-icon-button icon="menu" onclick="drawer.toggle()"></paper-icon-button>
<div main-title>My app</div>
<paper-icon-button icon="delete"></paper-icon-button>
<paper-icon-button icon="search"></paper-icon-button>
<paper-icon-button icon="close"></paper-icon-button>
<paper-progress value="10" indeterminate bottom-item></paper-progress>
</app-toolbar>
</app-header>
<app-drawer id="drawer" swipe-open></app-drawer>
这在网站上是完全一样的,那为什么对他们有用,而我却不行。
当我点击菜单图标时出现问题。
请帮忙。
谢谢
我建议你不要使用onclick
..
他们提供的方法非常糟糕,您的代码无法正常工作的原因可能是因为您使用的是 shadow
dom,相反,他们使用的是 shady
dom。
这意味着,你不能简单地在影子dom中做document.getElemenetById("drawer").toggle();
。 shadowRoots
将整个元素包装到一些无法从外部访问的块中。 (除非您使用 shadowRoot
表示法。)
没关系,要使其工作,您必须执行一些样板功能。
首先,使用on-tap
代替onclick
。这只是聚合物功能。你的 paper-icon-button
会像:
<paper-icon-button icon="menu" on-tap="openDrawer"></paper-icon-button>
然后,定义函数openDrawer
:
openDrawer: function() {
this.$.drawer.toggle();
}
就是这样。还值得一提的是,如果您在 Polymer 2.0 中使用原生元素,则应该使用 on-click
侦听器。如果你想使用 on-tap
你必须扩展 Polymer.GestureEventListeners
.
class somElement extends Polymer.GestureEventListeners(Polymer.Element){}
我是 Polymer 2.0 的新手,正在努力解决某些我似乎不理解的错误。
其中之一是:
Uncaught ReferenceError: drawer is not defined at HTMLElement.onclick
所以为了解释我的问题,我正在尝试使用 app-drawer
,它会在单击事件时从左向右滑动。但是点击事件returns出现上面的错误。如何确定抽屉已定义? (顺便说一句,我正在关注 app-layout
部分主网站中提供的代码片段。- https://www.webcomponents.org/element/PolymerElements/app-layout)。
这是我的代码:
<app-header reveals>
<app-toolbar>
<paper-icon-button icon="menu" onclick="drawer.toggle()"></paper-icon-button>
<div main-title>My app</div>
<paper-icon-button icon="delete"></paper-icon-button>
<paper-icon-button icon="search"></paper-icon-button>
<paper-icon-button icon="close"></paper-icon-button>
<paper-progress value="10" indeterminate bottom-item></paper-progress>
</app-toolbar>
</app-header>
<app-drawer id="drawer" swipe-open></app-drawer>
这在网站上是完全一样的,那为什么对他们有用,而我却不行。
当我点击菜单图标时出现问题。
请帮忙。
谢谢
我建议你不要使用onclick
..
他们提供的方法非常糟糕,您的代码无法正常工作的原因可能是因为您使用的是 shadow
dom,相反,他们使用的是 shady
dom。
这意味着,你不能简单地在影子dom中做document.getElemenetById("drawer").toggle();
。 shadowRoots
将整个元素包装到一些无法从外部访问的块中。 (除非您使用 shadowRoot
表示法。)
没关系,要使其工作,您必须执行一些样板功能。
首先,使用on-tap
代替onclick
。这只是聚合物功能。你的 paper-icon-button
会像:
<paper-icon-button icon="menu" on-tap="openDrawer"></paper-icon-button>
然后,定义函数openDrawer
:
openDrawer: function() {
this.$.drawer.toggle();
}
就是这样。还值得一提的是,如果您在 Polymer 2.0 中使用原生元素,则应该使用 on-click
侦听器。如果你想使用 on-tap
你必须扩展 Polymer.GestureEventListeners
.
class somElement extends Polymer.GestureEventListeners(Polymer.Element){}