Передать функцию через аксессоры x-tag
Я пытаюсь использовать аксессоры x-tag, но не могу найти хорошую документацию по ним. Я хотел бы передать функцию через аксессор и написать что-то вроде этого:
<my-element logic="myFunction()"></my-element>
И я хочу сохранить эту функцию и использовать ее позже. Есть ли способ сделать это?
1 ответ
Я действительно не уверен, чего ты пытаешься достичь, но я попробую. Если вы пытаетесь сделать логику доступной для всех <my-element>
теги, используйте methods
объект, как это:
xtag.register('my-element', {
methods: {
logic: function (a) {
return a * 2;
}
}
});
Если вы хотите быть в состоянии назначить logic
каждому экземпляру <my-element>
индивидуально, тогда вы можете использовать стандартный (не атрибутный) метод доступа и делать это неявно.
xtag.register('my-element', {
accessors: {
logic: {}
}
});
HTML
<my-element id="test"></my-element>
Установить логику для одного экземпляра <my-element>
var el = document.querySelector('my-element#test');
el.logic = function (a) {
return a * 2;
};
Если вы хотите использовать атрибут, чтобы установить значение logic
для глобальной функции, вы можете сделать это:
Пример глобальной функции
function myFunction(a) {
return a * 2;
}
Составная часть
xtag.register('my-element', {
accessors: {
logic: {
attribute: {},
get: function () {
return this._logic;
},
set: function (v) {
this._logic = window[v] || null;
}
}
}
});
Использование (HTML)
<my-element logic="myFunction"></my-element>
Использование (JS)
var el = document.querySelector('my-element');
el.logic(2); // 4