2016-04-28 78 views
0

我试图向函数注入依赖关系,但它似乎没有工作。我做错了什么,或者我应该做一些不同的事情,而不是试图向函数中注入依赖关系?我试图让以下代码工作:如何将依赖关系注入函数中?

angular.module('app').controller('usersController', usersController); 

usersController.$inject = ['$http', '$cookies']; 
function usersController($http, $cookies) { 
    var self = this; 
    self.isLoggedIn = ($cookies.get('token') && $cookies.get('secret')); 

    register.$inject = ['$http', '$cookies']; 

    self.register = register; 

    function register($http, $cookies) { 
    console.log(self.username); 
    $http.post('/register', { 
     username: self.username, 
     password: self.password, 
     email: self.email 
    }).then(function successCallback(response) { 
     self.isLoggedIn = true; 
     $cookies.put('token', response.data.token); 
     $cookies.put('secret', response.data.secret); 
    }, function errorCallback(response) { 
     console.log('Something went wrong.'); 
    }); 
    }; 
}; 

回答

1

这看起来不合适的原因有两个:你的控制器已经注入了这些服务,所以再次注入它们是毫无意义的,从我所知道的情况来看,没有状态需要传递到你的函数中去实际工作。

这将更清洁 - 删除多余的$inject并清理函数参数列表。

angular.module('app').controller('usersController', usersController); 

usersController.$inject = ['$http', '$cookies']; 
function usersController($http, $cookies) { 
    var self = this; 
    self.isLoggedIn = ($cookies.get('token') && $cookies.get('secret')); 

    self.register = register; 

    function register() { 
     console.log(self.username); 
     $http.post('/register', { 
      username: self.username, 
      password: self.password, 
      email: self.email 
     }).then(function successCallback(response) { 
      self.isLoggedIn = true; 
      $cookies.put('token', response.data.token); 
      $cookies.put('secret', response.data.secret); 
     }, function errorCallback(response) { 
      console.log('Something went wrong.'); 
     }); 
    } 
} 
+0

是的,这工作!谢谢! – Jeffrey

1

你不需要。 $http$cookies已经在那个范围内可用

function usersController($http, $cookies) { 
    // ... 

    this.register = function() { 
     $http.post(...) 

     // and so on 
    } 
} 
+0

有趣。没有这样看待它。今天学到了一些东西! – Jeffrey