调用工厂方法时Angularjs错误

时间:2014-11-21 03:48:55

标签: javascript angularjs scope factory

我是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();

究竟发生了什么以及为什么会出现这个错误?

1 个答案:

答案 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对象。否则,它不是有效的工厂,您的外部代码将无法进入内部获取功能。