Добавить гиперссылку с событием клика в сетку Dojo

Мой вопрос похож на реализацию гиперссылки в сетке данных додзё, и я успешно могу добавить разметку для гиперссылок в сетку додзё с помощью средства форматирования.

Однако мне нужно подключить события щелчка по этим гиперссылкам, чтобы вызвать функцию в Dijit, содержащую сетку.

У меня есть форматер, как показано ниже:

var createEditLinks = function (data) {
   return '<a class="my-css-class" href="#" onclick="myFunctionInsideTheDijit()">' + data.title + '</a>'
}

Хотя это работает (я получаю разметку внутри ячейки сетки), функция myFunctionInsideTheDijit недоступна (если я не объявлю ее в глобальной области видимости).

Я немного посмотрел на dom-construct, но просто не могу понять, как добавить гиперссылку, которая при нажатии вызывает функцию Dijit.

Любая помощь очень ценится! Спасибо!

2 ответа

Решение

Более современный способ сделать это, чем с dojo.behavior будет использовать on и делегирование мероприятия. Экземпляры dgrid уже выставляют свои собственные on Функция, чтобы сделать это немного проще:

grid.on('a.my-css-class:click', function (event) {
    ...
});

Я прибег к использованию dojo/ поведения, чтобы заставить его работать:

// Code inside Dijit's startup function
var that = this;

behavior.add({
    "a.my-css-class": {
        onclick: function (e) {
            e.preventDefault();

            that.myFunctionInsideTheDijit();
        }
    }
});

behavior.apply();

Не уверен, что есть более элегантный способ сделать это?:)

Другие вопросы по тегам