工厂方法似乎未定义

时间:2016-02-18 10:53:11

标签: javascript angularjs

简单明了。我有这个工厂:

ctrls.factory('dataLoad', ['$http', function($http) {
    return {
        loadFromJSON: loadFromJSON
    }

    function loadFromJSON() {
        $http.get("data.json").then(function(response) {
            return response;
        });
    }
}]);

这与我的控制器位于同一模块上。在典型的路由技术之后,控制器被绑定到模板,但是所有内容都被加载到index.html模板中,因此在控制器中注入“dataLoad”应该没有问题,这样做很好并且没有错误:

ctrls.controller('mainCtrl', ["$scope", "dataLoad", function($scope, dataLoad) {

在控制器中,我从方法调用loadFromJSON,然后调用该方法:

function loadData(){
    dataLoad.loadFromJSON().then(function(data) {
        $scope.allCharts = data;
        console.log($scope.allCharts);
    }).then(function(err){
        console.log(err);
    });
}
loadData();

但是,不知何故,这不起作用!它给了我以下错误:

  

错误:dataLoad.loadFromJSON(...)未定义

我做错了什么?

1 个答案:

答案 0 :(得分:3)

loadFromJSON没有return语句,因此当您调用它时会返回undefined

您可能想要返回$http返回的承诺。

function loadFromJSON() {
    return $http.get("data.json");
}

(我删除了你放在那里的then处理程序,因为它没有做任何事情。)