【发布时间】:2014-01-19 02:23:45
【问题描述】:
警告:可能是一个愚蠢的问题。
我有一个像这样的 ajax 获取请求:
$.getJSON("/recruiting/countries/all/", function (data) {
$.each(data, function (name, key) {
var dropdownCountry = new DropdownCountry();
dropdownCountry.name = name;
dropdownCountry.key = key;
self.orgCountryDdl.push(dropdownCountry);
});
alert(JSON.stringify(self.orgCountryDdl()));
});
它点击一个网址并有一个国家列表:名称和密钥。
我正在尝试分配数据并最终填充国家列表的淘汰赛 js 可观察数组。此 GET 请求中引用的其他 javascript 代码:
var DropdownCountry = function (name, key) {
this.name = name;
this.key = key;
};
function UserRecruitingViewModel(apiBaseUrl, userId) {
var self =this;
//...snip...
//ddl country stuff
self.orgCountryDdl = ko.observableArray();
self.selectedOrgCountry = ko.observable();
var DropdownCountry = function (name, key) {
this.name = name;
this.key = key;
};
self.selectedOrgCountry = ko.observable();
///..get request in here...
};
在我收到的警报中,我看到这些数据回来了:
[
{"name":0,"key":{"Id":1,"Name":"Albania"}}
,{"name":1,"key":{"Id":2,"Name":"Algeria"}}
,{"name":2,"key":{"Id":3,"Name":"American Samoa"}}
,{"name":3,"key":{"Id":4,"Name":"Andorra"}}
,{"name":4,"key":{"Id":5,"Name":"Angola"}}
,{"name":5,"key":{"Id":6,"Name":"Anguilla"}}
,{"name":6,"key":{"Id":7,"Name":"Antarctica"}}
...snip...
]
发生了什么,将其放入可淘汰的可观察数组的最干净的方法是什么?
对不起:想要的结果是这个数据:
[
{"Id":1,"Name":"Albania"}
,{"Id":2,"Name":"Algeria"}
,{"Id":3,"Name":"American Samoa"}
...snip...
]
其实我是偶然发现的:
$.getJSON("/recruiting/countries/all/", function (data) {
$.each(data, function (name, key) {
var dropdownCountry = new DropdownCountry();
dropdownCountry.name = key.Name;
dropdownCountry.key = key.Id;
self.orgCountryDdl.push(dropdownCountry);
});
alert(JSON.stringify(self.orgCountryDdl()));
});
第二个函数变量有我想要的数据。有人可以解释为什么会这样吗?我对 ajax 调用很陌生,所以我什至不知道要谷歌什么。
【问题讨论】:
-
想要的结果是什么?
-
那你为什么要声明这个
self.selectedOrgCountry = ko.observable();两次? -
期望的结果是一个具有键:“1”,名称:“国家名称”的对象。我是否两次声明了 ko 数组?
标签: javascript ajax json knockout.js