2013-10-30 32 views
0
var login_app = angular.module('login_app',[]); 


login_app.factory('login_service', function($http) { 
    return { 
     login: function() { 
      //return the promise directly. 
      return $http.get('/service/login') 
         .then(function(result) { 
          //resolve the promise as the data 
          return result.data; 
         }); 
     } 
    } 
}); 

login_app.controller('login_controller', 
        ['$scope', 
        function($scope,login_service){ 

         $scope.login_username = ""; 
         $scope.login_password = ""; 
         $scope.remember_login = false; 
         $scope.login_button_action = function(){ 
                login_service.login(); 
               } 

        }]); 

我有一個登錄表單,它在此控制器的範圍內,工作正常。 每當我按下登錄按鈕,login_button_action通過ng-click指令被調用。注入的服務在控制器中未被識別

my problem is that I keep getting this error in my JavaScript console. 

ReferenceError: login_service is not defined 

wya我的控制器使用服務有什麼問題嗎?

回答

2

您需要的login_service添加到上面的定義:

login_app.controller('login_controller', ['$scope','login_service', 
    function($scope,login_service){ 
     // Your code using the service. 
}]); 

,當然還有......服務腳本文件需要在文件中被鏈接。

要完成......如果您不考慮縮小等問題,則根本不需要這樣做。在這種情況下,它可以只是

login_app.controller('login_controller', function($scope, login_service){ 
     // Your code using the service. 
}]); 
+0

感謝它的工作!所以要清楚的是,在控制器中用作參數的變量的名稱應該與字符串原樣匹配還是重要的順序?其次,它全部在一個文件中。如果我將服務放在其自己的另一個文件中,在控制器使用它之前如何確保服務已被定義? 我必須在html頁面中按順序包含所有文件嗎? 還是有一個角度來完成這個? –

+0

訂單很重要,並且定義爲字符串的名稱必須與實際服務相匹配。對象引用可以是任何你喜歡的,但最好保持它一致。 –

+0

如果將它們放在單獨的文件中,則需要確保在角應用程序實例化之前加載它們。爲了您的信息;看一下名爲RequireJS的圖書館。正在解決這類問題。 –