javascript - PassFactory.setNewPass 不是函数,工厂函数不是函数

标签 javascript angularjs angularjs-service angularjs-controller angularjs-factory

似乎无法让这个工厂正常工作。 我正在尝试执行来自工厂的 $http 请求。 但我收到以下错误:

TypeError: PassFactory.setNewPass 不是函数

下面是代码:

工厂

   (function () {
        angular
            .module("myApp")
            .factory('PassFactory', ['$http', function ($http) {
    /*
                var passFactory = {};
                passFactory.setNewPass = function (newpass, user) {
                    return $http.post('/password/' + newpass, user, function (response) {
                    });
                };
    */
                return {
                    setNewPass: function (newpass, user) {
                        return $http.post('/password/' + newpass, user, function (response) {
                        });
                    }
                };
            }])
    })();



Controller

 (function () {
        angular
            .module("myApp")
            .controller('PCtrl', ['$scope', '$location', '$rootScope', 'PassFactory', setHome]);

        function setHome($scope, $location, PassFactory) {
            $scope.login = function (user) {
                if (user.newpassword == user.newpasswordconfirm) {


                    PassFactory.setNewPass(user.newpassword, user).then(function (response) {
                        $location.path("/");
                    });


                }
            };
        }
    })();

最佳答案

您在 Controller 工厂功能中错过了 $rootScope。始终确保依赖顺序已注入(inject)到 DI 数组中,您应该以相同的顺序在其工厂函数中请求它们的实例。

angular
 .module("myApp")
 .controller('PCtrl', ['$scope', '$location', '$rootScope', 'PassFactory', setHome]);

//added $rootScope in 3rd place
function setHome($scope, $location, $rootScope, PassFactory) {

关于javascript - PassFactory.setNewPass 不是函数,工厂函数不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41250666/

相关文章:

JavaScript 事件监听器测验

javascript - 在 AngularJS 中无需 keyup 或 keypressed 即可触发 ng-change 函数

angularjs - AngularJS 服务中的 Firebase AngularFire

angularjs - Angular 服务和 Web Worker

javascript - AngularJS 中 ng-repeat 内的增量计数器

javascript - jQuery Slider - 如何根据另一个 slider 制作一组具有最大值的 slider ?

javascript - Jquery 将 onClick 函数作为单独的函数运行

javascript - Protractor 不会从 IE10 中的下拉列表中选择

angularjs - 如何使用 AngularJS 在点击事件中传递字符串?

javascript - 两个不同 ng-app 中的 Controller 之间共享数据无法通过共享服务工作