javascript - 工厂方法似乎未定义

标签 javascript angularjs

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

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

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

这与我的 Controller 位于同一模块上。 Controller 在典型的路由技术之后绑定(bind)到模板,但所有内容都加载到index.html模板中,因此在 Controller 中注入(inject)“dataLoad”应该没有问题,这工作得很好并且不会出现错误:

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

在 Controller 中,我从一个方法调用 loadFromJSON,然后调用该方法:

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

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

Error: dataLoad.loadFromJSON(...) is undefined

我做错了什么?

最佳答案

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

您可能想返回 $http 返回的 promise 。

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

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

关于javascript - 工厂方法似乎未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35479417/

相关文章:

javascript - jquery 数据表 : how to clear column search filter

javascript - AngularJS - 大量数据

javascript - 在页面级别缓存 jQuery 选择是个好主意吗?

javascript - 从 Firebase Firestore 异步返回数据

javascript - 将 jquery 指定为 angularjs 的依赖项会在 requirejs 中生成错误

javascript - Angular 不对数据进行排序

javascript - 单击按钮后为拖放angularjs实现CSS3样式

javascript - 从 AngularJS 1.5 升级到 1.7 会抛出 "Can' t copy!不支持制作 Window 或 Scope 实例的副本”

Javascript:使用逻辑运算符和比较运算符

javascript - 如何在javascript中动态替换类名