2016-04-11 26 views
0

uygulamam Uygulamamı bir işletme listesi sağlayan bir AngularJS fabrikası yapmaya çalışıyorum. Ama bu ilk kez çalıştırılan değişkeni elde edemiyorum. Ama aralık çalıştırıldıktan sonra, değişkeni alırım. Herhangi nasıl,AngularJS fabrikası veriyi ilk kez döndürmez, ancak aralık aramalı yöntemden sonra

angular.js:12783 Error: [$injector:undef] Provider 'businessList' must return a value from $get factory method

Ama benim çözüm hatalı olduğunu düşünüyorum:

bu sayfada konsolda ilk çalıştırmada olsun? Beni buraya doğru yönlendiren var mı? Örneğin rootScope burada iyi bir fikir kullanıyor?

İstediğim, uygulamamdaki, ziyaretin başlangıcında toplanan ve kendini bir zamanlayıcı ile güncelleyen, dünyanın her yerinde erişilebilen bir işletme listesidir. Bu yüzden ben sadece bu listede bulabildiğim laravel arka ucundan gelen istemli istekleri aramak zorunda değilsiniz .. benim fikrim.

Fabrika:

myApp.factory('businessList', ['$interval', '$http', '$rootScope', 
    function($interval, $http, $rootScope) { 
     function bedriftliste() { 
     $http.get('get/allebedrifter') 
      .then(function(result) { 
       bedrifter = result.data; 
       $rootScope.bedrifter = bedrifter; 
      }); 
     return $rootScope.bedrifter; 
    } 
    var bedrifter = bedriftliste(); 
    // start periodic checking 
    $interval(bedriftliste, 5000); 
    return bedrifter; 
} 
]); 

Kontrolör

myApp.controller('bsC', ['$rootScope', '$scope', 'businessList', 
        function($rootScope, $scope, businessList) { 
    $scope.allebedrifter = businessList; 
}]);` 
+0

nedenle gibi iyi çalışıyor gibi görünüyor. Yalnızca $ http yanıtı çözüldükten sonra değerleri vardır. – sdfacre

+0

Evet, ama bu işe yaramıyor: $ rootScope.bedrifter = bedriftliste(); –

+0

tabi ki çalışmıyor. Herhangi bir cevap vermeden hemen önce, $ http ile başka bir çalışma servisiniz var mı? eğer evet, neden bu hizmeti bu şekilde yazıyorsun? Sadece $ http ve sözlerini bildiğinden emin olmak için. – sdfacre

cevap

0

Ben nesnesi boş olup olmadığını sadece bir http.get yaparak bu çözüldü.

 if (!$rootScope.allebedrifter) { 
     $http.get('get/bedrift/' + $scope.tslug) 
      .then(function(result) { 
       bedriften = result.data; 
       $scope.bedriften = bedriften; 
     }); 

fabrika ilk kez yüklendi zaman $ rootScope.bedrifter tanımsız olduğu için, ilk seferde hatası atar neden bu