Передать функцию через аксессоры 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
Другие вопросы по тегам