Pracuję nad wtyczką dla Trumbowaniańskiego, gdzie próbuję zapisać funkcję w zmiennej, dzięki czemu można go wywołać później, ale także bądź prawidłowy bez zmiany zawartego pliku JavaScript.

Problem polega na tym, że funkcja nie jest wywoływana, gdy próbuję to zadzwonić.

Oto mój odpowiedni kod:

init: function (trumbowyg) {
    
    var plugins = trumbowyg.o.plugins;

    ...
    
    if(!plugins.giphycrumbs.close_modal) {
        plugins.giphycrumbs.close_modal = function() {
            console.log('close modal');
            $(plugins.giphycrumbs.modal_selector).modal('hide');
        }
    }
    
    $(document).on('click', '.add_giphy', function() {
        trumbowyg.execCmd('insertImage', $(this).attr('src'), false, true);
        
        plugins.giphycrumbs.close_modal;
        
    });
    
    // If the plugin is a button
    trumbowyg.addBtnDef('giphycrumbs', {
            //this function is handled exactly the same way except it actually works
        fn: plugins.giphycrumbs.open_modal
    });
}

W powyższym kodzie widać, widzę, że sprawdzam, czy plugins.giphycrumbs.close_modal nie jest ustawiony, a jeśli to prawda, ustawię go do funkcji, która ma zamknąć modalny.

W moim kliknięciu obsługi dla .add_giphy działa insertImage, ale plugins.giphycrumbs.close_modal to nigdy wykonany (nie dostaję komunikatu console.log W funkcji)

Jeśli to zrobię console.log(plugins.giphycrumbs.close_modal) oczekiwana funkcja jest umieszczona w konsoli.

Dlaczego funkcja close_modal nie została wykonana w moim kodzie?

0
GrumpyCrouton 20 lipiec 2020, 21:11

1 odpowiedź

Najlepsza odpowiedź

Odpowiedź

Spróbuj dodać nawiasy do close_modal wewnątrz obsługi kliknięcia.

Wyjaśnienie

Wydaje mi się, że nie jesteś wywołujący (dzwoniąc) tej funkcji.

W twoim kliknięciu jest ta linia plugins.giphycrumbs.close_modal;

W JavaScript jest to odniesienie do obiektu w obiekcie giphycrumbs. Chociaż zdarza się być funkcją, nie zostanie wywołany jako taki, chyba że użyjesz nawiasów po nim (i opcjonalnie daj mu pewne argumenty).

Mam nadzieję, że to pomoże! 👍.

1
JuanCaicedo 20 lipiec 2020, 18:17