2014-09-30 3 views
2

При попытке воспроизвести раскрывающееся меню бумаги, которое отлично работает на веб-сайте полимеров на моем сервере apache2, я получаю эту ошибку. При нажатии кнопки выпадающего меню.Ошибка выпадающего меню в файле наблюдения.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 t порядок важен для подкласса. Я не знаю, поможет ли это в этом случае, но попробуйте поместить импорт для 'paper-dropdown-menu.html' после импорта для' paper-elements.html'. –

+0

Я также вижу эту ошибку, даже с демо-версией на бумажной основе (https://www.polymer-project.org/components/paper-menu-button/demo.html). Как и в случае с OP, это происходит только при обслуживании файла с локального веб-сервера. –

+0

(Это с Polymer v0.4.1, то же самое, что в настоящее время работает на сайте полиэфирного проекта в настоящий момент.) –

ответ

2

Адам,

это, вероятно, потому, что компоненты Polymer, установленные на вашем веб-сервере, являются более старой версией (например, это происходит с компонентами 0.3.5), чем компоненты на сайте Polymer. Вы можете проверить свою версию в заголовке файла 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()'), должна находиться только в основной версии core-overlay; для 0.4.2 и ранее, это должно быть 'Platform.flush()'. – DocDude

+0

Спасибо, это сработало для меня. – David

Смежные вопросы