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

У меня есть следующий код, в котором ожидается двусторонняя привязка между first_name и свойством val.

  <!DOCTYPE html>

  <link rel="import" href="packages/polymer/polymer.html">

  <link rel="import" href="packages/paper_elements/paper_input.html" >

  <polymer-element name='paper-input-snippet'>
    <template>

    <div on-mouseout="{{zoom}}">
      <paper-input
        label="First" floatinglabel
        error="Invalid input"

        id="first_name"
        value='{{val}}'>
      </paper-input>

      <paper-input
        label="Middle" floatinglabel
        error="Invalid input"

        id="middle_name">
      </paper-input>

      <paper-input
        label="Last" floatinglabel
        error="Invalid input"

        id="last_name">
      </paper-input>

    </div>

    </template>

    <script type="application/dart">

    import 'package:polymer/polymer.dart';
    import 'dart:html';

    import 'package:paper_elements/paper_input.dart';

    @CustomTag( 'paper-input-snippet' )
    class PaperInputSnippet extends PolymerElement
    {
      @observable String val = 'Tommy';
      String receiver = '';

      PaperInputSnippet.created() : super.created();

      void zoom( Event e, var detail )
      {
        print ( e.target );
        print ( val);
      }

      @override
      void attached()
      {
         super.attached();
         receiver = this.dataset['receiver'];
      }
    }

    </script>
  </polymer-element>

Однако изменение значения элемента paper не печатает новое значение, печатается только инициализированное значение.

Это баг или я что-то не так делаю>


person st_clair_clarke    schedule 07.07.2014    source источник
comment
Можно ли встроить код дротика в полимерный элемент?   -  person Robert    schedule 07.07.2014
comment
Возможно, связано с code.google.com/p/dart/issues/detail. ?id=19794   -  person Günter Zöchbauer    schedule 07.07.2014


Ответы (1)


ИЗМЕНИТЬ

Недавно были опубликованы обновленные пакеты Polymer, которые должны решить эту проблему, см. https://groups.google.com/a/dartlang.org/forum/#!topic/bugs/-2f-TeaOoac для получения дополнительной информации.

Вам нужно настроить ограничение зависимости, чтобы получить это обновление, потому что это версия для разработки.

polymer: ">= 0.11.1-dev < 0.12.0" 

ИЗМЕНИТЬ КОНЕЦ

Для этого code.google.com/p/dart/issues/detail?id=19794 существует нерешенная проблема.

Пока это не будет исправлено, вы можете обойти это, добавив обработчик событий on-change:

<paper-input
    label="First" floatinglabel
    error="Invalid input"

    id="first_name"
    value='{{val}}'
    on-change='{{firstNameChangeHandler}}'
    >
  </paper-input>
  void firstNameChangeHandler() {
    val = ($['first_name'] as PaperInput).value;
  }
person Günter Zöchbauer    schedule 07.07.2014
comment
Я следовал инструкциям, но когда я запускал приложение, я получаю дополнительную распечатку со следующим | Кенни (127.0.0.1:8080/packages/polymer/ src/js/polymer/polymer.js:12). - person st_clair_clarke; 07.07.2014
comment
Я не знаю, что делать с вашим комментарием. Это все сообщение об ошибке? Попробуйте поместить его в обратные кавычки `comment` - person Günter Zöchbauer; 08.07.2014
comment
Извини. Я использую печать (val); оператор, чтобы увидеть, было ли напечатано правильное значение. Скажем, я изменил значение по умолчанию с «Томми» на «Кенни», а затем запустил приложение. Результат: «Кенни (127.0.0.1:8080/ packages/polymer/src/js/polymer/polymer.js:12) Кенни». Обратите внимание, что печатаются два слова «Кенни», один, как и ожидалось, другой со ссылкой на файл полимера.js. - person st_clair_clarke; 08.07.2014
comment
Я обновил свой ответ, потому что, похоже, доступен пакет обновлений, который должен содержать исправление для этой проблемы. - person Günter Zöchbauer; 11.07.2014
comment
для меня на 0.12.0-dev ‹paper-input label=Project Path inputValue={{path}} floatlabel=true›‹/paper-input› ‹paper-button label=Enhance Project at '{{path} }'›‹/paper-button› все еще не работает? - person H.R.; 13.07.2014
comment
Я попробовал ваш код, и для меня это сработало. Я предполагаю, что вы ожидали, что значение изменится до, когда вы покинете поле (например, нажав клавишу табуляции. Если вы хотите такого поведения, вам нужно изменить value='{{val}}'> на inputValue='{{val}}'>. value изменяется только тогда, когда ввод теряет фокус inputValue отражает любые изменения. - person Günter Zöchbauer; 13.07.2014