3

このファクトリが正しく機能するように見えません。 私は工場から$ httpリクエストをしようとしています。 しかし、私はこのエラーの取得しています:

はTypeError:以下PassFactory.setNewPassは関数ではありません

はコードです:

工場
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) { 
         }); 
        } 
       }; 
      }]) 
    })(); 



コントローラ

(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("/"); 
        }); 


       } 
      }; 
     } 
    })(); 

答えて

1

コントローラ工場の機能では、$rootScopeが見つかりませんでした。依存関係の順序がDI配列内に挿入されていることを必ず確認してください。同じ順序で、そのインスタンスをそのファクトリ関数内で要求する必要があります。

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

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

ありがとうございました!それが私の問題を解決しました。 –

関連する問題