Задание переменных в пространстве имен Javascript из кода веб-формы ASP.NET - PullRequest
1 голос
/ 22 апреля 2011

Я пытаюсь очистить какой-то старый код, и в настоящее время он использует переменные, установленные с помощью ScriptManager для использования в коде Javascript, чтобы показать / скрыть части страницы.

Переменные в настоящее время просто _showNameDiv и т. Д.

Я бы хотел поместить их все в общее пространство имен, чтобы сделать вещи немного чище, например MyCompany.Toggles.ShowNameDiv.

Я пытался создать пространство имен

var MyCompany = { 
                  Toggles: {}
                }

И в коде позади сделайте это:

JavaScriptRegistrar javaScriptRegistrar = GetJavaScriptRegistrar();
javaScriptRegistrar.Register("MyCompany.Toggles.ShowNameDiv", true);

Но я получаю 'undefined' только для этой переменной. (GetJavaScriptRegistrar - это оболочка для ScriptManager).

Есть ли способ сделать то, что я пытаюсь сделать? Я поступаю об этом неправильно? Есть ли лучшая альтернатива, которая принесет мне такую ​​же выгоду?

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

1 Ответ

1 голос
/ 06 ноября 2011

Ну, трудно понять, в чем может быть проблема, не зная, что именно делают эти части кода (особенно JavascriptRegistrar).

Одной из возможных проблем может быть область действия пространства имен javascript, которое вы объявляете. Используя ключевое слово «var», вы не делаете пространство имен глобальным, оно определяется только в замыкании, в которое оно определено. Я предполагаю, что код javascript, который регистрирует класс JavascriptRegistrar, ожидает глобальную переменную и не находит ее, поэтому он возвращает undefined.

Вот фрагмент кода, который «раскрывает» глобально вашу переменную:

(function(window, undefined) {

    var myCompany = {
                        Toggles: {}
                    };

    window.MyCompany = myCompany;

})(window);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...