工厂方法似乎未定义

Factory method seems to be undefined

本文关键字:未定义 方法 工厂      更新时间:2023-09-26

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

ctrls.factory('dataLoad', ['$http', function($http) {
    return {
        loadFromJSON: loadFromJSON
    }
    function loadFromJSON() {
        $http.get("data.json").then(function(response) {
            return response;
        });
    }
}]);

这与我的控制器位于同一模块上。控制器在典型的路由技术之后绑定到模板,但所有内容都加载到索引.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(...) 未定义

我做错了什么?

loadFromJSON没有

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

你可能打算回报$http回报的承诺。

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

(我删除了您放在那里的then处理程序,因为它没有执行任何操作)。