使用来自 JSON 请求的方法和类创建 Javascript 对象
Create Javascript Object with methods and class from deffered JSON request
我想创建一个具有全局范围的对象,该对象具有从外部JSON文件加载的数据。我想在加载文档后使用此对象中的数据。即不等待用户输入。我正在尝试使用jquery不同的方法。我假设 Jquery get 方法生成了适当的不同对象供我稍后使用。声明对象的代码如下
var myData = {
init: function () {
$.getJSON('data/data.json', function (raw) {
myData.data = raw;
alert(myData.data['UWLO']['name']);
yes = true;
$.each(raw, function (code, details) {
if (yes){
alert(code);
}
yes = false;
nameList[details.name] = code;
});
//alert(nameList);
});
},
data: {},
nameList: {},
findByCode: function (code) {
return myData.data[code];
},
getCode: function (name) {
return nameList[name];
},
getNameStrings: function () {
return Object.keys(nameList);
}
}
初始化对象的代码是
$(document).ready(function () {
$.when(myData.init()).then(function () {
alert(myData.nameList);
});
});
alert(myData.data['UWLO']['name']); request 给出正确的值,以便正确加载 json 文件且格式正确警报(代码);行工作,以便脚本正确进入循环我认为问题在于生成名称列表
你很接近。 $.ajax
函数返回deferred
对象的承诺。因此,您必须从init
函数中返回它,以便以后能够使用它。试试这个:
init: function () {
return $.getJSON('data/data.json', function (raw) {
您还可以简化其他代码段:
myData.init().done(function() {
//...
});
编辑 - 实际上,为了明确回调发生的顺序(以防这在您的实际解决方案中更复杂),像这样创建自己的延迟对象可能会更好:
init: function () {
var def = $.Deferred();
$.getJSON('data/data.json', function (raw) {
myData.data = raw;
alert(myData.data['UWLO']['name']);
yes = true;
$.each(raw, function (code, details) {
if (yes){
alert(code);
}
yes = false;
nameList[details.name] = code;
});
//alert(nameList);
def.resolve();
});
return def.promise();
},
相关文章:
- 使用Web Html表单创建Javascript数组
- 使用私有成员创建JavaScript类
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)
- Mediawiki皮肤创建-Javascript don'Don’t get load
- 为自定义网站创建JavaScript搜索框,创建显示搜索结果的弹出窗口
- 为表菜单创建javascript
- 使用jstl c:forEach在迭代jsp bean上创建javascript json对象
- 从字符串创建 JavaScript 函数
- 使用计算名称创建 JavaScript 对象
- 什么是创建 JavaScript 类的适当、现代和跨浏览器安全的方法
- 创建 JavaScript 构造函数时的语法错误
- 使用 C# 中的代码隐藏在单击按钮时创建 Javascript 警报
- php在foreach循环中创建javascript
- 创建javascript模块
- 如何从数组中动态创建javascript变量
- 创建JavaScript库:更改实际图像
- 如何创建javascript执行器,使元素在selenium webdriver中可见
- 如何在我的服务器上创建javascript,该服务器使用该服务器上的后端,并将在另一个网站上使用
- 创建javascript子类型的实例会产生意外行为
- 如何创建javascript顺序动画