私のアプリにビジネスのリストを提供するAngularJSファクトリを作ろうとしています。しかし、私はこれを実行する最初の変数を取得するように思えます。しかし、インターバルが実行された後、私は変数を取得します。AngularJSファクトリはデータを初めて返しませんが、呼び出されたインターバルメソッド後には
私は、ページ内のコントローラ上の最初の実行でこれを取得する:
angular.js:12783 Error: [$injector:undef] Provider 'businessList' must return a value from $get factory method
しかし、私は私のソリューションは、任意の方法を故障していると思いますか?誰かが私をここの正しい方向に向けることができますか?例えば、ここではrootScopeを使用していますか?
私が欲しいのは、訪問時に収集され、自分自身をタイマーで更新する、世界的にアクセス可能なビジネスのリストです。だから私は、laravelバックエンドからの誘惑的な要求をいつも呼んではいけません。私はそのリストでそれを見つけることができます。私の考えです。
工場:
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;
}
]);
コントローラ
myApp.controller('bsC', ['$rootScope', '$scope', 'businessList',
function($rootScope, $scope, businessList) {
$scope.allebedrifter = businessList;
}]);`
工場が初めてロードされたときに$ rootScope.bedrifterが未定義たので、それは、最初の時点でエラーがスローされた理由のように正常に動作するようです。これは、$ http応答が解決された後にのみ値を持ちます。 – sdfacre
はい、これは動作しません:$ rootScope.bedrifter = bedriftliste(); –
はもちろん動作しません。私が何か答えを出す直前に、あなたが$ httpで他の働くサービスを持っているかどうか分かりますか?はいの場合、なぜこのサービスをこのように書くのですか?ちょうどあなたが$ httpと約束を知っていることを確認する。 – sdfacre