2016-02-27 4 views
1

Я использую Meteor JS. У меня есть функция JavaScript, описанной в файле A, который я хочу, чтобы повторно использовать путем вызова из файла B. Пример:Как вызвать статическую функцию JS, определенную в другом файле javascript

Файл A:

function Storeclass(){} 
Storeclass.validate=function(){...} 

От А JavaScript Я пытаюсь вызвать StoreClass.validateBasic() это работает, но то же самое звонок не работает из B. Также я попытался в B делать var storeClassObj=new StoreClass(); и storeClassObj.validate(). Я получаю ошибку ReferenceError: StoreClass is not defined.

+0

'Storeclass = function() {}?', Метеор примет глобальную переменную, доступную между всеми вашими JS, также, если вы поместите var, вы делаете ее локальной переменной scoope, и поэтому она dosnt существует на других .js – Ethaan

+0

Как сделать этот класс глобальным? так что это видно на моих JS-файлах? Var, к которому вы обращаетесь, находится в файле, где я вызываю функцию не в файле A, где эта функция определена. – user3517450

ответ

0

Прочитайте эту doc о Метеор в разделяет пространства имен.

Соответствующая часть заключается в следующем:

// File Scope. This variable will be visible only inside this 
// one file. Other files in this app or package won't see it. 
var alicePerson = {name: "alice"}; 

// Package Scope. This variable is visible to every file inside 
// of this package or app. The difference is that 'var' is 
// omitted. 
bobPerson = {name: "bob"}; 

Однако позже в тот же документ, он говорит, что это:

При объявлении функции, иметь в виду, что функция х() {} является просто сокращением для var x = function x() {} в JavaScript.

Это говорит о том, что функция, которую вы написали это частный в файл A и не могут быть доступны из файла B, даже если порядок загрузки правильно!

+0

Я удалил var перед функцией, и это сработало, спасибо ex: validateBasic = function() {} и полностью вытащил Storeclass. – user3517450

0

Поскольку ваша функция в файле B может быть вызвана до того, как файл A готов, вы должны убедиться, что все необходимые js-файлы загружены успешно.

Если вы используете JQuery, то в файле B называют вашу функцию в документе готовой функции:

$(document).ready(function() { 
    //File A code 
}); 

или простой JavaScript:

(function() { 
    // your page initialization code here 
    // file A code 

})(); 
Смежные вопросы