проблема вызова функции пространства имен из функции javascript в другом файле js - PullRequest
2 голосов
/ 28 февраля 2011

Пространство имен является новым для меня в js - и мой проект стал очень сложным, поэтому пришло время приручить зверя: -P

Я создал пространство имен foo в foo.js, используя шаблон модуля.

var foo = (function () {       
        update: function () {
            alert('z');
        }
    };
}());

Я могу вызвать foo.update в функции готовности документа на html-странице с $(function () {foo.update(); });

Но я не могу заставить его вызывать вызов из другого файла js.

Я пытаюсь вызвать его из bar.js

function updateTheFoo() {
    foo.update();
}

Фактический вариант использования гораздо сложнее, так как я использую его в динамически созданном диалоговом окне jQueryUI с переменными кнопками.переданный код на лету - но это легкая часть ...

Я уверен, что это что-то простое - но я не могу найти ответ.

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Ваша функция должна быть записана следующим образом:

var foo = (function () {       
    return {
        update: function () {
            alert('z');
        }
    };
}());

Ваша проблема, как говорит Мэтт, в пропущенном операторе возврата. То, что вы используете, это шаблон модуля, который находится на шаг впереди пространства имен, который позволяет иметь пространство имен и закрытые переменные / функции внутри этого пространства имен и предоставлять только то, что вы хотите, с помощью оператора return.
Вы можете прочитать больше о шаблоне модуля в этой статье в блоге YUI .

0 голосов
/ 04 января 2012

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

это то, как она должна быть написана, если вы хотите вручную вызвать функцию:

var foo = foo || 
    {        
        update: function () { 
            alert('z'); 
        } 
    };

foo.update();

Вы также можете написать:

var foo = foo || {};
foo.update = function() { alert('z'); };
foo.update();

// or pass a variable

foo.update2 = function(text) { alert(text); };
foo.update2('z');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...