2014-09-30 51 views
2

当试图复制在我的apache2服务器上聚合物网站上运行如此出色的纸张下拉菜单时,出现此错误。当按下下拉按钮时。observe.js中的纸张下拉菜单错误

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> 

当按下按钮时,没有其它的值可以看出或selected.It简单地呈现为与一些第一纸项可见的一个小盒子金融机构。

我已经安装了所有上述依赖使用鲍尔和聚合物上发现的命令,从我理解它应该为我处理依赖问题,所以我似乎不知道为什么我有上述错误。

编辑:

在进一步研究看来这行代码在部件是打破/芯下拉/芯下拉-overlay.html:125:26

var dims = this.dimensions; 
var margin = dims.margin; 
+0

IMPOR对于子类来说,顺序很重要。我不知道在这种情况下它是否会有所帮助,但在导入“paper-elements.html”后,尝试在'paper-dropdown-menu.html'中输入import。 – 2014-10-01 23:49:49

+0

即使使用股票纸菜单按钮演示(https://www.polymer-project.org/components/paper-menu-button/demo.html),我也会看到此错误。与OP一样,它仅在从本地Web服务器提供文件时才会发生。 – 2014-10-02 18:25:22

+0

(与Polymer v0.4.1相同,与目前在聚合物项目网站上运行的相同。) – 2014-10-02 18:34:43

回答

2

亚当,

这可能是因为Web服务器上安装的聚合物组件比旧版本(例如0.3.5组件)的聚合物组件要比聚合物网站上的聚合物组件要旧。您可以在polymer.js文件的标题中查看您的版本。

要解决此问题,请先下载最新的(0.4.2)组件。

一旦升级到0.4.2,你可能会收到以下错误:

Uncaught TypeError: undefined is not a function 

这是因为核心overlay.html的版本包含在当前纸张下拉菜单中下载有一个错字:

Polymer.flush(); 

复制从查看源代码的最新代码:https://www.polymer-project.org/components/core-overlay/core-overlay.html来纠正这:

Platform.flush(); 
+0

你是如何下载组件的?您显示的行('Polymer.flush()')应该只在核心覆盖的主版本中;对于0.4.2及更早的版本,它应该是'Platform.flush()'。 – DocDude 2014-11-07 19:56:52

+0

谢谢,这对我有用。 – David 2014-11-24 17:01:26