Foursquare 调用 KO 可观察数组:无法读取未定义的 属性 'push'
Foursquare call to KO Observable Array: Cannot read property 'push' of undefined
我正在尝试将 Foursquare 场地请求的结果添加到 KO Observable 数组。无法解决push未定义的错误。我认为这是因为助手没有正确处理数据。
我定义数组并发出请求
storelocations = ko.observableArray([]);
var fourquarerequest = $.ajax({
async: true,
url: 'https://api.foursquare.com/v2/venues/search',
dataType: 'json',
data: 'XXXXrequestXXXXX',
})
然后我尝试遍历结果,用助手处理它们,并将每个结果添加到 Observable 数组
fourquarerequest.done((response) => {
var self = this
data = response.response.venues;
for (var name in data) {
shop = new shopdetails(data);
self.storelocations.push(shop);
console.log(storelocations);
}
//console.log(JSON.stringify(data))
});
这是处理过程
var shopdetails = function (shop) {
var self = this;
self.name = data.name;
self.lat = data.lat;
self.long = data.long;
self.URL = data.url;
if (typeof self.URL === 'undefined') {
self.URL = "";
}
};
这是范围问题。您已经在 foursquare.done
函数中定义了 self
,然后编写了 self.storedlocations.push()
,即使 storedlocations
是一个全局变量。
改为storedlocations.push()
。
我正在尝试将 Foursquare 场地请求的结果添加到 KO Observable 数组。无法解决push未定义的错误。我认为这是因为助手没有正确处理数据。
我定义数组并发出请求
storelocations = ko.observableArray([]);
var fourquarerequest = $.ajax({
async: true,
url: 'https://api.foursquare.com/v2/venues/search',
dataType: 'json',
data: 'XXXXrequestXXXXX',
})
然后我尝试遍历结果,用助手处理它们,并将每个结果添加到 Observable 数组
fourquarerequest.done((response) => {
var self = this
data = response.response.venues;
for (var name in data) {
shop = new shopdetails(data);
self.storelocations.push(shop);
console.log(storelocations);
}
//console.log(JSON.stringify(data))
});
这是处理过程
var shopdetails = function (shop) {
var self = this;
self.name = data.name;
self.lat = data.lat;
self.long = data.long;
self.URL = data.url;
if (typeof self.URL === 'undefined') {
self.URL = "";
}
};
这是范围问题。您已经在 foursquare.done
函数中定义了 self
,然后编写了 self.storedlocations.push()
,即使 storedlocations
是一个全局变量。
改为storedlocations.push()
。