Задать/получить свойства пользовательского элемента элемента

Я пытаюсь добавить пользовательское свойство к существующему элементу, но считаю это невозможным.

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

Я попытался сделать что-то вроде этого:

el.someProperty = 'Some value';

но эта строка выдала ошибку, что у el нет get$someProperty.

Я хотел бы сделать что-то похожее на jQuery, которое вы можете просто использовать

el.prop('propName', 'value');

Спасибо.


person Imri Barr    schedule 28.01.2014    source источник


Ответы (1)


Использовать

el.attributes['someProperty'] = 'Some value';

если это не работает, используйте

el.dataset['someProperty'] = 'Some value';

таким образом, добавленный атрибут получит префикс data и, вероятно, будет называться data-some-property (не проверял)

person Günter Zöchbauer    schedule 28.01.2014
comment
Тогда я думаю, вам нужно использовать dataset вместо attributes. Если вы хотите назначить элемент Polymer, вы можете el.someProperty = 'value' или (el as MyElement).someProperty = 'value' - person Günter Zöchbauer; 28.01.2014
comment
Параметр el.dataset['someProperty'] = 'Some value' создает атрибут с именем data-someProperty. Выполнение $(el).prop('someProperty', 'Some value') не создает атрибут, но добавляет поле к объекту el, что, по словам спрашивающего, они пытались сделать, но получили ошибку. - person Louis; 28.01.2014
comment
@Louis, спасибо за разъяснения. Динамическое добавление полей не поддерживается в Dart. Добавление атрибута — самое близкое, что можно сделать. - person Günter Zöchbauer; 28.01.2014
comment
Виноват. Dart так тщательно скрывает DOM, что el.attributes["foo"] = "blah" работает. - person Louis; 28.01.2014