2015-04-03 5 views
0

Я пытаюсь создать простой класс или контейнер для хранения нескольких методов JavaScript, как показано ниже.Создание контейнера jQuery для хранения других функций

Но по какой-то причине я не могу назвать эти методы вне контейнера. Например, вызывающие функции, как показано ниже, вызывают ошибку.

$(document).ready(function(){ 
    Core.Error.alert(); // This doesn't work. 
    Core.Call(); // This doesn't work. 

}); 

Ошибка: Uncaught TypeError: Не удается прочитать свойство 'Ошибка' неопределенной

Я могу вызывать функции внутри контейнера. Я новичок в концепции плагинов jQuery и был бы признателен, если кто-то может мне помочь в этом.

+0

Ошибка, Ajax вызова являются частными переменными/функциями, а не свойствами Core. – lshettyl

+0

Крошечное примечание: у вас есть неиспользованный '()' в конце вашей функции DOM ready handler. Это не IIFE. –

ответ

2

Вы можете экспортировать эти методы (подробнее о Module Pattern), например, так

var Core = (function() { 
    ... 

    return { 
    Error: Error, 
    Ajax: ajax, 
    Call: call 
    }; 
})(); 

Core.Error.alert(); 
Core.Call(); 

Example

2

Изменить это в:

var Core = {  
    error: { 
     alert: function() { 
      alert('Error => alert called'); 
     }, 
     display: function() { 
      alert('Error => display called'); 
     } 
    }, 

    ajax: { 
     view: function() { 
      alert('Ajax => view called'); 
     }, 
     update: function() { 
      alert('Ajax => update called'); 
     } 
    }, 

    call: function() { 
     Core.error.alert(); 
     Core.error.display(); 
     Core.ajax.view(); 
     Core.ajax.update(); 
    } 
} 

$(document).ready(function() { 
    Core.call(); // This works 
}()); 

Working fiddle

+0

У вас, кажется, есть дополнительное закрытие '()' внутри конца готового обработчика DOM (ах, как и OP). –

Смежные вопросы