Привязка данных полимера не работает

Я пытаюсь заставить <core-menu> работать с Dart. Он отображается нормально, но свойство selectedIndex не обновляется. Следующий код отлично работает с PolymerJS, но в версии Dart selectedIndex не обновляется (<core-menu selectedIndex="{{selectedMenuIndex}}"...>)

Я ожидал, что {{selectedMenuIndex}} будет доступен в теге <core-animated-pages>, но переменная {{selectedMenuIndex}} пуста. Он не обновляется. В файле .dart переменная объявлена ​​следующим образом:

@observable num selectedMenuIndex = 0;

Это код .html:

<link rel="import" href="packages/polymer/polymer.html">
<link rel="import" href="packages/core_elements/core_drawer_panel.html">
<link rel="import" href="packages/core_elements/core_menu.html">
<link rel="import" href="packages/core_elements/core_selector.html">
<link rel="import" href="packages/core_elements/core_item.html">
<link rel="import" href="packages/core_elements/core_icon_button.html">
<link rel="import" href="packages/paper_elements/paper_icon_button.html">
<link rel="import" href="packages/core_elements/core_toolbar.html">
<link rel="import" href="packages/core_elements/core_header_panel.html">
<link rel="import" href="packages/paper_elements/core_animated_pages.html">

<polymer-element name="test-app">

<template>
<!-- [START html] -->
<core-drawer-panel id="drawerPanel">

    <core-header-panel drawer>
        <core-toolbar id="navheader'">
            <span>Menu</span>
        </core-toolbar>
        <core-menu selected="0" selectedIndex="{{selectedMenuIndex}}" id="coreMenu" on-click="{{togglePanelButton}}">
            <core-item icon="settings" label="One"></core-item>
            <core-item icon="search" label="Two"></core-item>
        </core-menu>
    </core-header-panel>

    <core-header-panel main>
        <core-toolbar id="mainheader">
            <paper-icon-button id="navicon" icon="menu" on-click="{{ togglePanelButton }}"></paper-icon-button>
            <span flex>Title</span>
        </core-toolbar>
        <core-animated-pages selected="{{selectedMenuIndex}}" notap id="core_animated_pages" transitions="slide-from-right">
            <section class="content-section">
                Section 1
            </section>
            <section class="content-section">
                Section 2
            </section>
        </core-animated-pages>
    </core-header-panel>

</core-drawer-panel>
<!-- [END html]-->
</template>

<script type="application/dart" src="testapp.dart"></script>
</polymer-element>

У вас, ребята, тоже проблемы с базой данных, или это я что-то не так делаю?

ОБНОВЛЕНИЕ: я отправил отчет об ошибке здесь: https://code.google.com/p/dart/issues/detail?id=19794


person Anders    schedule 02.07.2014    source источник
comment
Обычно это работает в Polymer.dart. Это либо проблема в core_elements (которые в настоящее время находятся в экспериментальном состоянии), либо ошибка, с которой я столкнулся недавно, когда вы присваиваете начальное значение наблюдаемому полю (см. также мой комментарий к отчету об ошибке).   -  person Günter Zöchbauer    schedule 02.07.2014
comment
Спасибо. Используя стандартные элементы DOM, такие как ‹input вместо ‹core-*, это работает. Так что да, это проблема с core_elements. Осталось дождаться, пока ребята исправят.   -  person Anders    schedule 02.07.2014
comment
Эта проблема, кажется, исправлена. См. связанную выше проблему или мой обновленный ответ на странице stackoverflow.com/questions/24601866.   -  person Günter Zöchbauer    schedule 11.07.2014


Ответы (2)


Я получил ответ от группы Dart Polymer здесь: https://code.google.com/p/dart/issues/detail?id=19794

Кажется, есть проблема с двусторонней привязкой к core_elements.

person Anders    schedule 02.07.2014
comment
Чтение этой темы помогло мне решить и эту проблему. У меня была неправильная версия в моем pubspec - person Andre; 03.08.2014

У меня похожая проблема. Когда я попытался встроить основные элементы в пользовательский полимерный элемент, основной элемент не загружался. Я переместил основной элемент в файл index.html, и это сработало.

Я вижу, что есть патч для решения этой проблемы. Патч предполагает, что при компиляции в JS код должен работать. Мне не повезло с JS.

person sabrooks    schedule 09.07.2014