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()