我正在嘗試創建一個角度工廠,這是基於來自複數網站課程http://www.pluralsight.com/training/player?author=shawn-wildermuth&name=site-building-m7&mode=live&clip=3&course=site-building-bootstrap-angularjs-ef-azure的一個示例。角度工廠不傳遞數據返回
從調試Chrome中的代碼,它似乎運行良好。我可以看到當我調試服務獲取我的數據並將其放入數組中時,但是當我查看$ scope.data或dataService.data中的控制器時,數組爲空。我沒有看到任何javascript錯誤。我不確定我做錯了什麼,有什麼建議。我正在使用AngularJS v1.3.15。
module.factory("dataService", function($http,$routeParams,$q) {
var _data = [];
var _getData = function() {
var deferred = $q.defer();
$http.get("/api/v1/myAPI?mainType=" + $routeParams.mainType + "&subType=" + $routeParams.subType)
.then(function (result) {
angular.copy(result.data,_data);
deferred.resolve();
},
function() {
//Error
deferred.reject();
});
return deferred.promise;
};
return {
data: _data,
getData: _getData
};});
module.controller('dataController', ['$scope', '$http', '$routeParams', 'dataService',function ($scope, $http, $routeParams, dataService) {
$scope.data = dataService;
$scope.dataReturned = true;
$scope.isBusy = true;
dataService.getData().then(function() {
if (dataService.data == 0)
$scope.dataReturned = false;
},
function() {
//Error
alert("could not load data");
})
.then(function() {
$scope.isBusy = false;
})}]);
比較遺憾的是,當我把這裏的代碼創建了這些錯誤。不知道這是怎麼回事,我第一次問堆棧溢出。我已修復上面的帖子,但仍然有同樣的問題。 至於我爲什麼要這樣做。那麼我就是這樣做的例子。對我來說似乎很奇怪。他說了一些關於它能夠檢測數據服務的變化。整個想法是,我可以在這裏存儲數據的共享副本,並減少往返服務器的次數。不知道我真的很喜歡它是誠實的,我沒有這項服務找到了所有這些工作。 –
@AndrewCrowder我修改了我的答案給你一些代碼。它應該工作。你可以嘗試嗎? – Qianyue
謝謝我使用類似於你的代碼來完成它的工作,但它似乎是間歇性的,它會工作一段時間,然後停下來,當我對java腳本做了一些非常小的調整。 因爲在我剛剛回去之前,我有一個非工廠版本的工作。我知道答案的信用在這裏是一件大事,不知道做了什麼,因爲我是放棄解決方案的人而不是你。我真的很感激你的時間和你提供的幫助。 –