Flickr API çağrısına dayalı bir Flickr url oluşturmaya çalışıyorum ve bu sonucu bir handlebars.js şablonuna döndürüyorum. Eşzamansız süreçlerin etrafında bir yol bulmaya çalışıyorum.Meteor - asenkron işlevi gidon şablonuna döndürür?
Geri arama işlevi oluşturmaya çalıştım ancak tanımlanmış bir nesne veya değişkeni HTML şablonuna nasıl alacağımı hala belirsiz.
var FlickrRandomPhotoFromSet = function(setID,callback){
Meteor.http.call("GET","http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key="+apiKey+"&photoset_id="+setID+"&format=json&nojsoncallback=1",function (error, result) {
if (result.statusCode === 200)
var photoResult = JSON.parse(result.content);
var photoCount = photoResult.photoset.total;
var randomPhoto = Math.floor((Math.random()*photoCount)+1);
var selectedPhoto = photoResult.photoset.photo[randomPhoto];
var imageURL = "<img src=http://farm"+selectedPhoto.farm+".staticflickr.com/"+selectedPhoto.server+"/"+selectedPhoto.id+"_"+selectedPhoto.secret+"_b.jpg/>";
FlickrObject.random = imageURL;
}
if (callback && typeof(callback)==="function") {
callback();
}
});};
Benim şablon kodu şudur: Burada
Flickr API işlevi kodudurTemplate.backgroundImage.background = function(){
FlickrRandomPhotoFromSet(setID,function(){
return FlickrObject;
});
};
Ama bu hala beni, sıkışmış değil içine tanımlanmış bir nesne elde edebilmek bırakır benim gibi kodlanmış HTML,:
<template name="backgroundImage">
<div id="background">
{{random}}
</div>
Yardımlarınız için teşekkürler. Flickr nesnesini ortadan kaldırmaya karar verdim (bu yalnızca değişkeni işlevin dışına çıkarmak için bir girişimdi) ve URL'yi doğrudan işlevin içinden Session nesnesine aktardım. Template.backgroundImage.background şablon komut dosyası, şimdi Session.get dosyasını döndürür. Artık her şey, URL'nin yinelenen tırnak işaretleriyle döndürülmesi haricinde çalışıyor ve henüz nasıl ortadan kaldırılacağını henüz çözemedim ...! – shongololo
Oturum karma ayarını yaptığınızda 'FlickrObject' yerine'/"([^"] +) "/ i.exec (FlickrObject) [1]' gibi bir şey kullanabilirsiniz. FlickrObject' kullandım ama yeniden adlandırabilirsiniz. sahip olduğunuz her şeye, ifade kapsülleyici çift tırnaklardan kurtulan bir regexp ifadesidir. – Akshat