Haxe DOMStringMap значения не доступны - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь получить доступ к атрибутам data- * для элемента в браузере в Haxe.

var element = document.getElementById('#someId');
var dataLabel = 'label'; //'data-label'
element.dataset[dataLabel] = 5;

Этот код (который работает в простом javascript) генерирует две ошибки компиляции в HaxeDevelop.

  1. "Строка должна быть Int"

  2. "Для аргумента функции 'data'"

Как я могу получить доступ к наборам данных элементов в Haxe? Есть ли известный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Я думаю, что это обратная сторона того, как работает оператор доступа к массиву в Haxe.

Только abstract типы могут определять доступ к массиву, так как здесь указано ручное .

Haxe's DOMStringMap - это просто внешний класс, поэтому он не может иметь доступа к массиву, который использует String в качестве ключа вместо Int.

Теперь есть способы обойти это. Ключевое слово untyped 1015 *, видимое здесь , является одним из способов, с помощью которого ваш первоначальный пример мог бы работать. untyped не рекомендуется, хотя это скользкий путь к хрупкому коду, которого следует избегать, когда это возможно.

0 голосов
/ 03 сентября 2018

В итоге я использовал методы Element # getAttribute и Element # setAttribute для достижения той же функциональности.

var element = document.getElementById('#someId')
var dataLabel = 'label'; //'data-label'
element.setAttribute('data-' + dataLabel, 5);
...