我正在尝试清理一些旧代码,它目前使用ScriptManager设置的变量在Javascript代码中使用,以显示/隐藏页面的部分。
当前变量仅为_showNameDiv
等
我想把这些都放在一个共同的命名空间,使事情更干净一点,如MyCompany.Toggles.ShowNameDiv
。
我试图创建一个命名空间
var MyCompany = {
Toggles: {}
}
在后面的代码中这样做:
JavaScriptRegistrar javaScriptRegistrar = GetJavaScriptRegistrar();
javaScriptRegistrar.Register("MyCompany.Toggles.ShowNameDiv", true);
但是我只得到'undefined'
。(GetJavaScriptRegistrar是ScriptManager的包装器)。
有办法做我想做的事吗?我是不是走错路了?有没有更好的选择能让我得到同样的好处?
请记住这是旧代码,我不能重写整个页面。我正在尝试做一个渐进的步骤,我可能会用它作为一个例子,我可以展示给我的同事。
如果不知道这些代码(特别是JavascriptRegistrar)究竟是做什么的,就很难找出问题所在。
一个可能的问题可能是你声明的javascript"命名空间"的范围。通过使用"var"关键字,您没有使命名空间成为全局的,它只是在定义它的闭包中定义的。我认为javascript代码的JavascriptRegistrar类注册期望一个全局变量,没有找到任何,所以它返回undefined
。
这里有一段代码来"暴露"全局变量:
(function(window, undefined) {
var myCompany = {
Toggles: {}
};
window.MyCompany = myCompany;
})(window);