javascript - TypeError: Factory.function 不是函数

标签 javascript angularjs factory typeerror

我正在使用 Web API 编写我的第一个 Angular 应用程序,但我在从工厂调用函数时遇到了一些问题。

我有两个看起来像这样的工厂:

main.factory('Table', function ($http, $log) {
    return {
        build: function (token, cubeid) {
            return $http({
                method: 'POST',
                url: 'http://localhost:50051/api/structure/cube',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                transformRequest: function (obj) {
                    var str = [];
                    for (var p in obj)
                        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
                    return str.join("&");
                },
                data: { token: token, cubeId: cubeid }
            });
        }
    };
});

main.factory('Login', function ($http, $log) {
    return {
        authorize: function (username, password) {
            return $http({
                method: 'POST',
                url: 'path/to/api/',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                transformRequest: function (obj) {
                    var str = [];
                    for (var p in obj)
                        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
                    return str.join("&");
                },
                data: { username: username, password: password }
            });
        }
    };
});

还有两个看起来像这样的 Controller :

main.controller('loginController', ['$scope', '$log', '$http', '$location', 'Login', function jobListController($scope, $log, $http, $location, Login) {

    $scope.login = function () {
        Login.authorize($scope.username, $scope.password).success(function (response) {
            $location.path('/table/'+response.token);
        });
    }

}]);

main.controller('tableController', ['$scope', '$routeParams', '$log', '$http', 'Table', function tableController($scope, $routeParams, $log, Table) {
    var cube = 130;
    var token = $routeParams.token;
    $log.log($routeParams.token);
    Table.build(token, cube).success(function (response) {
        $scope.structure = response;
        $log.log(response);
    });
}]);

由于某种原因,构建函数会引发一个错误,提示“TypeError:Table.build 不是一个函数”,而授权函数的工作就像一个魅力。

谁能向我解释为什么构建功能不起作用?

PS:我已经检查过 token 实际上已传递给 Controller ​​。

最佳答案

你向你的 Controller 注入(inject)不同的服务/工厂

['$scope', '$routeParams', '$log', '$http', 'Table', 
function tableController($scope, $routeParams, $log, Table)

应该是

['$scope', '$routeParams', '$log', '$http', 'Table', 
function tableController($scope, $routeParams, $log, $http, Table)

关于javascript - TypeError: Factory.function 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849110/

相关文章:

class - 是否可以在不使用 `eval()` 的情况下在 Julia 中实现类型工厂?

java - 如何在Spring-boot中创建简单的Factory设计模式?

javascript - TVML/tvOS : Template background?

javascript - 如何在响应模式下反转元素的顺序

angularjs - 使用 grunt 以 Angular 重定向到索引页

javascript - AngularJS 文本框返回未定义的值

javascript - 标签onclick中的html特殊字符

javascript - Bx Slider 增加div的高度

javascript - 当我更改 AngularJS 中另一个选择选项的值时,如何更改选择选项的值?

redis - 如何使用 txredis 编写用于客户端服务器通信的异步扭曲应用程序