Пример привязки данных с помощью Dart polymer — почему это отличается

#dart #dart-polymer

#dart #dart-polymer

Вопрос:

Я рассматриваю этот пример в https://github.com/dart-lang/core-elements/blob/master/example/core_selection.html

Код — Dart.

Тем не менее, глядя на привязку данных

 selectAction(e, detail) {
   detail['item'].classes.toggle('selected', detail['isSelected']);
}
  

определение метода не совпадает с тем, что я ожидал

 selectAction(e, detail, element) {
   detail['item'].classes.toggle('selected', detail['isSelected']);
}
  

В чем разница

Ответ №1:

До недавнего времени Polymer.dart требовал, чтобы методы обработчика событий имели эти три аргумента, но это больше не требуется.

Метод обработчика событий может принимать от 0 до 3 аргументов.

В приведенном выше примере target или как вы его назвали element , он не передается в качестве аргумента. Этот аргумент несколько избыточен, потому что вы получаете доступ к тому же значению с помощью e.target (то же самое для detail / e.detail )

Комментарии:

1. Спасибо, Гюнтер. Я бы хотел, чтобы команда polymer.dart предоставила нам информацию о том, где мы могли бы найти изменения, когда они будут внесены. Это сэкономило бы нам много времени. Я использую polymer 0.11.0 5, с какой версии polymer были внесены эти изменения?

2. Я не знаю, когда это было изменено. Недавно в комментарии к другому вопросу @Robert упомянул об этом.

3. В то время как e.target работает, d.detail — НЕТ. Обработчик событий, как вы заявили, также будет принимать 1-3 аргумента.