2015-12-10 2 views
0

Все,Не удается получить доступ к функциям внутри оболочки Javascript?

В моем коде отсутствует JSLint для «использования строгой» проблемы. Как предложено здесь: Disable "use the function form of use strict" but keep the "Missing 'use strict' statement" warning

Если вы завернете все функции в файле javascript с помощью другой оболочки функций, она решит эту проблему.

Однако теперь после этого все мои функции не определены, когда я вызываю их со страницы?

(function() { 
"use strict"; 

/** 
* Update the page with a message informing the user 
* an email has been sent to their email address 
* @param details user details (email address) 
*/ 
function shareEmailSent(details) { 

    // unhide confirmation message 
    $('strong#emailAddress').text(details.email); 
    $('#confirmationMessage').removeClass('hide'); 
} 

/** 
* Handle error 
*/ 
function showError() { 
    return false; 
} 

/** 
* Makes a POST request to send the current user 
* an email containing their unqiue share url 
* @param emailList 
*/ 
function sendEmail(emailList) { 
    var data = {}; 
    data.formToken = $('#formToken').val(); 
    data.emails = emailList; 
    $.mooAjax({ 
     url: "/ajax/share/refer_a_friend_email.php", 
     type: "POST", 
     data: data, 
     dataType: "json", 
     error: showError, 
     success: function (response) { 
      shareEmailSent(response); 
     } 
    }); 
} 
}()); 

e.g.

shareEmailSent не определен

Как я могу это исправить, но и передать вопрос JSLint, а?

Thanks

ответ

1

Существует несколько подходов, которые вы можете предпринять. По убыванию в порядке убывания:

  1. Не вызывайте функции снаружи. Свяжите все обработчики событий с помощью JavaScript (например, с addEventListener)
  2. Использование the revealing module pattern
  3. Явное делают функции глобалам (например, с window.someFunction = someFunction).

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

+0

Спасибо, за помощь. Я пошел с опцией 3. Однако теперь по какой-то причине он нарушает мои функции по валидации, любая идея, почему назначение функции глобальной переменной влияет на логику? – kaleeway

+0

Этого не должно делать, и я понятия не имею, что вы подразумеваете под словом «проверка моей функции». – Quentin