2013-09-04 3 views
1

Я пытаюсь получить привязку данных для работы в дротике. В основном, я делаю то же самое, что и в этом video. Используя псевдокод выглядит следующим образом:dart mdv databinding не обновляется при изменении

mdv.init(); 
var p = new Person('john'); 
query('#someId').model = p; 

В HTML файле я также есть шаблон, который работает правильно. Пока я только пытаюсь получить одностороннюю привязку данных к работе, и хотя шаблон правильно инициализирован, последующие изменения переменной p не отображаются в шаблоне. Я пытаюсь активировать обновление, подобное этому

node.model = null; 
node.model = p; 

Это не инициирует обновление. Но если я использую задержку он делает работу:

node.model = null; 
new Timer(new Duration(milliseconds:20),(){ 
    node.model = p; 
}); 

Так у меня есть несколько вопросов по этому поводу:

  1. Почему изменение переменной не отражает изменения в шаблоне?
  2. Является ли шаблон не обновляемой, как я это делаю? Или mdv/полимер не работает так, как он предназначен?
  3. Возможно ли вручную инициировать обновление шаблона?
  4. Можно ли легко преобразовать одностороннюю двустороннюю привязку данных (т. Е. Сделать класс Person в наблюдаемом psuedocode или что-то еще)?

PS Я искал и попробовал несколько вещей перед публикацией здесь. Я нашел topic, в котором создан пользовательский полимерный элемент, который кажется более сложным, чем хотелось бы. Я также попробовал fancy-syntax lib (это не улучшило его) и databinder (ошибка компиляции). Я также прочитал пару страниц о polymer, но я не уверен, что относится к дротику и не устарел (или «устарел», как предупреждает выше страницы).

ответ

0

Для обновления привязок автоматически при изменении требуется один из следующих пакетов.

documentation (Observables)

Я бы рекомендовал вам просто добавить "полимер", как зависимость (удалить MDV) к вашему pubspec.yaml. Таким образом, вам не придется обрабатывать проблемы с версиями, и у вас будет гарантия «подтвержденного» набора пакетов, работающих вместе.

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