Динамически добавлять импортированный вызов функции в onclick - PullRequest
0 голосов
/ 03 октября 2018

У меня есть скрипт, который загружает информацию и использует ее для добавления вызова по ссылкам.Я думаю, что будет понятнее с примером:

Script.js

const app = {

   init: function() {
     ...
     var link = document.createElement("a");
     link.setAttribute("onclick", "goToTicket(" + data.tickets[i].id +');');
     link.setAttribute("href", "javascript:void(0);");
     link.innerHTML = "Ticket " + data.tickets[i].id;
     cell1.appendChild(link);
   },

    ...

    goToTicket: function(ticketId){
       //Some code
    },
}

Sidebar.js

import app from './script.js';
...

iframe.html

...
<script type="module" src="lib/javascripts/ticket_sidebar.js"></script>
...

Когда я нажимаю на ссылку, сгенерированную в коде, я получаю сообщение об ошибке

TypeError: app.goToTicket не является функцией в HTMLAnchorElement.onclick

I 'Мы пробовали разные вещи, такие как добавление goToTicket непосредственно в Sidebar.js, но я могу запустить его.

Есть идеи, что мне не хватает?

Спасибо,

Ответы [ 2 ]

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

В конце концов, с помощью jQuery.Вот как сейчас выглядит script.js:

Script.js

const app = {

   init: function() {
     ...
     var link = document.createElement("a");
     link.setAttribute("href", "javascript:void(0);");
     link.innerHTML = "Ticket " + data.tickets[i].id;
     link.className = "ticket " +  data.tickets[i].id;
     $(document).on("click",".ticket."+data.tickets[i].id, data.tickets[i].id,app.goToTicket);
     cell1.appendChild(link);
   },

    ...

    goToTicket: function(ticketId){
       //Some code using ticketId.data
    },
}

Функция вызывается правильно, когда я нажимаю на ссылки

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

вы можете попробовать добавить module.exports = app;нижний файл Script.js

...