我是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();
究竟发生了什么以及为什么会出现这个错误?
答案 0 :(得分:4)
todomvc.factory('todoStorage', function ($q,$http) {
var STORAGE_ID = 'todos-angularjs-perf';
function get(){
return $http.get('http://localhost/test.php');
}
return{get:get};
});
//call the service like this
todoStorage.get().then(function(res){
$scope.todos = res.data;
});
您的代码未返回实际的服务工厂。由于您使用的是工厂,因此返回一些指向内部函数的JavaScript对象。否则,它不是有效的工厂,您的外部代码将无法进入内部获取功能。