Birden çok sayfada RESTful hizmetinden gelen bazı verileri kullanıyorum. Bunun için açısal fabrikaları kullanıyorum. Bu yüzden, verileri sunucudan bir kez almam gerekiyordu ve her defasında bu tanımlı hizmetle veri alıyorum. Aynı küresel değişkenler gibi. Benim gereksinimleri başı olarak benim için iyi çalışan
function myFunction($scope, myService) {
$scope.data = myService;
console.log("data.name"+$scope.data.name);
}
Its: Ben bu hizmeti kullanıyorum benim denetleyicisi olarak
var myApp = angular.module('myservices', []);
myApp.factory('myService', function($http) {
$http({method:"GET", url:"/my/url"}).success(function(result){
return result;
});
});
: İşte örnektir. Fakat sorun şu ki, web sayfamda yeniden yüklendiğimde servis tekrar çağrılacak ve sunucu isteğinde bulunacak. "Tanımlı Hizmet" e bağlı başka bir fonksiyonun arasında yürütülürse, "bir şey" tanımlanmamış gibi bir hata verir. Bu yüzden, hizmet yüklenene kadar komut dizimde beklemek istiyorum. Bunu nasıl yapabilirim? Angularjs'de böyle bir şey var mı?
Bu, sorunumu çözdü! Herkes için, ajax çağrısından veri gerektiren bir açılır kapanışım vardı, bu yüzden kapsam oluşturulduğunda veriler mevcut değildi. Bu erteleme ile, ajax çağrısından gelen verilere sahip olmak için kapsam atanabilir. –
@mikel: Burada başka bir sorum var. MyFuction() çağrınız hemen dönecek ancak bu söz .then() daha sonra arayacak. Ne yapmam gerekiyor? MyFuction() çağrısı .then() işlevi yürütmeyi bitirene kadar geri dönmeyecek. 'function myFunction ($ kapsamı, myService) { var myDataPromise = myService.getData(); myDataPromise.then (işlev (sonuç) { $ scope.data = sonuç; console.log ("data.name" + $ scope.data.name); }); console.log ("Bu, içindeki data.name'den önce yazdırılacaktır. Ve bunu istemiyorum."); } ' – Sujoy