0
私は、View Model of KnockoutからFoursquare APIを呼び出しています。 エラーは表示されませんが、ネットワークタブには、呼び出されるAPIの兆候はありません。Knockout.js View ModelからAPIを呼び出す
ビューモデルでAPIを呼び出すための特定のコードを追加する必要はありますか?
var ViewModel = function(){
console.log("View Model started")
var self = this;
// Foursquare API Call :
self.venueList = ko.observableArray([
]);
this.foursquareURL = 'https://api.foursquare.com/v2/venues/search?ll=37.8,-122.4&query=croissant&client_id=CLIENT_ID&client_secret=CLIENT_SECRET';
this.fs_ApiCall = function()
{
console.log("API called");
$.getJSON(foursquareURL, function(data){
//Add a header
$foursquareElem.text('Croissants');
var venues = data.response.venues;
self.venueList = ko.observableArray([]);
for (var i=0; i<venues.length; i++){
console.log(venues[i].name);
self.venueList.push ({
name: venues[i].name,
lat: venues[i].location.lat,
lng: venues[i].location.lng
});
console.log(self.venueList()[i].name)
}
}).error(function() {
$foursquareElem.text("No data available");
});
};
};
ko.applyBindings(new ViewModel());
HTML:
<div id="foursquare-venues">
<ul data-bind= "foreach:venueList">
<li id="li-name" data-bind = "text: $data.name">
</li>
'getJSON'呼び出しの' foursquareURL'は外部変数ですか?それ以外の場合は、 'this.foursquareURL'を取得したいかもしれません。 – litel
必要なすべてのパラメタ(ID、検索クエリ)がそのURLにあります。私はそれをView Modelで定義し、それを使用します。私はノックアウトではなかったテストコードを最初に書いただけで、リストビューに結果を追加していました。 –
私は$ .getJSON(self.foursquareURL、function(data))への呼び出しを変更しました。これで、console.logに、APIからデータが受信されたことがわかりました。ビュー内のデータバインディングに問題があります –