2013-05-06 1 views
4

Я заметил, что если я не использую @observable в любом из моих веб-сайтов, все изменения полей/членов автоматически подбираются с синтаксисом привязки данных.Следует ли использовать @observable в каждом поле?

Проблема, с которой я сталкиваюсь, заключается в выборе одного поля в классе, который расширяет WebComponent и применяет аннотацию @observable, теперь другие поля не корректно связывают и отображают изменения.

Это известная проблема или правильная функциональность?

Если я использую аннотацию @observable один раз, должен ли я применять его ко всем полям?

ответ

4

Как указано в другом сообщении, вы можете маркировать класс с помощью @observable.

В настоящее время вы находитесь между наблюдаемыми и наблюдателями. Наблюдатели (и отправка) являются старыми способами, которые вскоре будут прекращены. Обсерватории - это новый способ. Чтобы не сломать старых клиентов, мы продолжали наблюдать за ними. Если вы использовали хотя бы один @observable, система наблюдения отключена.

Новая реализация MDV v2 готовится. Я предлагаю вам использовать @observable за все, что вы хотите наблюдать. Остановите использование dispatch() везде. Кроме того, прекратите использование наблюдаемых полей верхнего уровня, поскольку они не будут привязываться к узлу.

Извинения, все действительно в состоянии изменения. Я подозреваю, что все скоро закончится.

Предлагаю прочитать больше о MDV v2 здесь: https://github.com/toolkitchen/mdv/blob/stable/README.md, чтобы подготовиться к смене.

Я подозреваю, что @observable по-прежнему будет вариантом, так что теперь все в порядке продолжать использовать это.

+0

Спасибо за ответ. Я попытался переместить все классы веб-компонентов в @observable, аннотируя класс. Не удалось добиться успеха в этом маршруте. Я использовал шаблон типа MVVM для структуры приложения, но не уверен, что этот дополнительный уровень косвенности делает наблюдаемый сбой. Собираюсь сделать меньший образец, чтобы попытаться воспроизвести. –

+0

Если наблюдатели являются устаревшими, не должны ли сгенерированные образцы использовать '@ observable' вместо этого? Как бы то ни было, все немного странно, если честно. – MarioP

+0

@MarioP это действительно сбивает с толку, и как только земля MDV v2 заработает, мы очистим все документы. Извините за этот период дуальности. –

3

От documentation here это похоже на дизайн для меня. Цель @observable состоит в том, чтобы отметить этого участника как интересного для привязки, в отличие от других.

Вы также можете аннотировать сам класс с @observable, если вы не хотите, чтобы комментировать каждое поле в отдельности: Marking a class as @observable is the same as marking all of its fields as @observable

1

Сегодня я сделал хорошее открытие о @observable: Если изменить наблюдаемое значение вне компонента код дротика (с использованием query("#component_id").xtag), поле должно быть помечено как @observable - в противном случае компонент не будет замечен при изменении значения.

В качестве альтернативы, после изменения значения, можно было бы позвонить dispatch(). Я сейчас тестирую, что быстрее, но я думаю, что это может быть аннотация.

Это не прямой ответ на вопрос, но, возможно, стоит подумать об этом, решив использовать аннотацию или не используя ее.

+0

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