Я пытаюсь передать атрибут данных в настраиваемый элемент как объект, но при получении внутри метода connectedCallback получаю значение «[объект объекта]» в строковой форме.
Так может ли кто-нибудь помочь мне выяснить, что нужно делать, чтобы получить атрибуты как объект внутри custom-element (веб-компонента).
образец кода
<script>
class myElements extends HTMLElement {
createdCallback() {
this.innerHTML = `<h1>Hello</h1>`;
}
attachedCallback() {
console.log(this.getAttribute('data'));
}
}
document.registerElement('my-element', myElements);
</script>
тег настраиваемого элемента
<script>
var object = { key1: 111, key2: 222, key3: function(){return "hi"}, key4:[1,2,3]};
function changeHandler() {
page('/default', function() {
// some logic to decide which route to redirect to
if (admin) {
page.redirect('/admin');
} else {
page.redirect('/guest');
}
});
}
</script>
<my-element data="object" onchange="changeHandler"></my-element>
Примечание: предположим, что <my-element>
- это раскрывающийся список, который дает пользователю возможность выбрать какое-либо значение.
Решение: по-прежнему нет собственного решения в спецификациях настраиваемых элементов (v0 и v1).
Поскольку пользовательские элементы не поддерживают привязку данных, для этого нам нужен слой шугаринга (например, Polymer или SkateJS), как указано @tony в комментарии.
data-*
. Какова цель сохранения функции в атрибуте элементаhtml
? - person guest271314   schedule 19.12.2016object
как глобальную переменную и использовать скобки для ссылки наobject
. - person guest271314   schedule 19.12.2016object
иchangeHandler
- это просто строки в значениях этих атрибутов, они не имеют отношения к вашему JS-коду. Пожалуйста, покажите нам точный код, который вы использовали для получения[object object]
. - person Bergi   schedule 19.12.2016