当我尝试复制在我的apache2服务器上的聚合物网站上工作得非常好的纸张下拉菜单时,我收到此错误。按下下拉按钮时。
Exception caught during observer callback: TypeError: Cannot read property 'margin' of undefined
at core-dropdown-overlay.Polymer.positionTarget (http://localhost/components/core-dropdown/core-dropdown-overlay.html:125:26)
at core-dropdown-overlay.Polymer.updateTargetDimensions (http://localhost/components/core-overlay/core-overlay.html:445:12)
at core-dropdown-overlay.Polymer.prepareRenderOpened (http://localhost/components/core-overlay/core-overlay.html:347:14)
at core-dropdown-overlay.Polymer.openedChanged (http://localhost/components/core-overlay/core-overlay.html:306:12)
at core-dropdown-overlay.g.invokeMethod (http://localhost/components/polymer/polymer.js:12:13312)
at core-dropdown-overlay.g.notifyPropertyChanges (http://localhost/components/polymer/polymer.js:12:11598)
at Object.Observer.report_ (http://localhost/components/platform/platform.js:12:12614)
at Object.createObject.check_ (http://localhost/components/platform/platform.js:12:18112)
at c (http://localhost/components/platform/platform.js:12:5465)
HTML
<!doctype html>
<html>
<head>
<!-- Style Sheets -->
<!-- <LINK REL=StyleSheet HREF="css/viewer.css" TITLE="ViewerPage"> -->
<!-- Dependencies -->
<!-- Polymer Dependencies -->
<script src="components/platform/platform.js"></script>
<link rel="import" href="components/paper-dropdown-menu/paper-dropdown-menu.html">
<link rel="import" href="components/core-elements/core-elements.html">
<link rel="import" href="components/paper-elements/paper-elements.html">
</head>
<body>
<paper-dropdown-menu selected="Financier" valueattr="label">
<paper-item label="Croissant"></paper-item>
<paper-item label="Donut"></paper-item>
<paper-item label="Financier"></paper-item>
<paper-item label="Madeleine"></paper-item>
</paper-dropdown-menu>
</body>
</html>
按下该按钮时,无法看到或选择任何其他值。它只是在一个小盒子中呈现为金融家,其中第一个纸质项目可以查看。
我已经使用bower和聚合物上的命令安装了所有上述依赖项,据我所知,它假设为我处理依赖性问题,所以我似乎不知道为什么我有上述错误。
编辑:
经过进一步研究,看来这行代码正在打破组件/ core-dropdown / core-dropdown-overlay.html:125:26
var dims = this.dimensions;
var margin = dims.margin;
答案 0 :(得分:2)
亚当,
这可能是因为您的Web服务器上安装的Polymer组件是旧版本(例如,这种情况发生在0.3.5组件中),而不是Polymer站点上的组件。您可以在polymer.js文件的标题中查看您的版本。
要解决此问题,请先下载最新的(0.4.2)组件。
升级到0.4.2后,您可能会收到以下错误:
Uncaught TypeError: undefined is not a function
这是因为当前纸张下拉菜单下载中包含的core-overlay.html版本有一个拼写错误:
Polymer.flush();
从view-source:https://www.polymer-project.org/components/core-overlay/core-overlay.html复制最新代码,将其更正为:
Platform.flush();