1
我是angularjs的新手。我試圖調用一個函數在一個工廠,但我收到以下錯誤,Angularjs調用工廠方法時出錯
Error: [$injector:undef] Provider 'todoStorage' must return a value from $get factory method.
這是我的工廠,
todomvc.factory('todoStorage', function ($q,$http) {
var STORAGE_ID = 'todos-angularjs-perf';
function get(){
var promise = $q.defer();
$http.get('http://localhost/test.php').success(function(data){
promise.resolve(data);
});
return promise.promise;
}
});
這是我如何調用該函數,
var todos = $scope.todos = todoStorage.get();
究竟發生了什麼以及爲什麼會出現這個錯誤?
錯誤已解決,但爲什麼我沒有收到數據。承諾返回null。推遲使呼叫同步嗎? – 2014-11-21 03:57:26
我建議您解決呼叫方的承諾,而不是在服務中。此外,基於$ q的實現,承諾永遠不會同步,即使承諾立即解決。 – TGH 2014-11-21 04:01:19
我不會在這裏創造一個新的承諾。返回由$ http生成的原始承諾會更容易。 – TGH 2014-11-21 04:01:56