我试图将依赖项注入函数但它似乎没有工作。我做错了什么或者我应该做些不同的事情,而不是尝试将依赖项注入函数中?我试图让以下代码工作:
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.');
});
};
};
答案 0 :(得分: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.');
});
}
}
答案 1 :(得分:1)
你不必。该范围内已提供$http
和$cookies
function usersController($http, $cookies) {
// ...
this.register = function() {
$http.post(...)
// and so on
}
}