Jquery javascript加载变量作用域
jquery javascript on load variable scope
我试图从外部js文件中获得一些配置,所以似乎我需要在$(document).ready(function(){....
中这样做。保存配置对象的变量需要能够被所有函数全局访问。没有任何理由让所有的函数都在一个文档就绪函数中。
从我所读到的,下面应该使app.config
全局可用,但它没有!
window.app = {};
$(document).ready(function(){
app.config = window[$('body').attr('data-app')];
});
console.log(app.config);
产生错误app.config is undefined
。我假设该变量可以在文档准备中全局访问,但我需要它在任何地方都全局可用。我该怎么做呢?如果可能的话,在文件准备的范围内和外的解释将不胜感激!
在为其赋值之前,它是不可用的。在ready
事件触发之前不给它赋值,而是立即查看该值(此时它仍然是undefined
)。
window.app = {};
$('button').on('click', function(){
app.config = 1
});
console.log(app.config);
这不会设置config
为1
,直到一个按钮被点击。
相同原则。
$(document).ready(function( ){});
将被解雇
document.onreadystatechange= function () {
if (document.readyState == "complete") {
}
}.//This is one ways of implementing $(document).ready();
在您的情况下,console.log()
在readyState
评估完成之前被调用。
实际的执行顺序如下:
1. app = {}
2. create listener
3. console.log app.conig
4. document is ready
5. app.config is initalized
您太早调用console.log(app.config)
,因为app.config
包含任何内容。
在config初始化后使用它的更好方法是下面的代码:
$(document).ready(function(){
app.config = window[$('body').attr('data-app')]
# you should use config only after it's initialized
useConfig()
# call other functions here too
})
function useConfig() {
console.log(app.config)
}
全局可用。$('body').attr('data-app')的值可能未定义。例如:
window.app = {};
$(document).ready(function(){
app.config = window['Attr'];
});
console.log(app.config);
相关文章:
- 当我更新另一个作用域变量时,作用域变量会自动更新
- 如何在隔离作用域指令中访问此作用域变量
- 正在向构造函数添加作用域变量
- 如何在angularjs中将多个作用域变量传递到自定义指令中
- 作用域变量未从状态父控制器继承到子控制器
- 插槽:访问作用域变量
- 在另一个作用域变量中使用AngularJS作用域变量
- 在Angular.js中通过检查作用域变量进行过滤
- 如何更新作为属性传入的作用域变量
- Node.js中的垃圾收集作用域-变量将保持设置状态多长时间
- 从$http.get调用更新Angular作用域变量
- AngularJS ui路由器:访问子作用域变量
- 访问AngularJS中函数中的作用域变量
- 为什么Angular 1.5双向绑定在将作用域变量传递给组件绑定时失败
- 修改作用域变量后,未更新作用域绑定
- 控制器作用域变量在刷新之前未加载
- 将Angular作用域变量的字符串描述传递给指令
- 将内部作用域变量绑定到外部“模板”
- 无法在 $.post 回调中设置作用域变量
- 如何从在 JS 中用作参数的匿名函数中分配外部作用域变量