2016-04-28 75 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