2016-05-23 83 views
0

我正在將對象傳遞給角度工廠,它引發錯誤。

廠:

visitorApp.factory('loginRepository', function ($resource) { 

    return { 
     VerifyVisitor: $resource('/api/VisitorWeb/VerifyLogin', {}, { 
      query: { method: 'POST', params: {loginModel:loginModel}, isArray: true } 
     }) 

    }; 

}); 

複雜的對象我試圖通過是loginModel。

從控制器調用到工廠。

visitorApp.controller('LoginController', function ($scope,$location,$route,loginRepository) { 
    $scope.submit = function (isValid) { 
     if (isValid) { 
      var loginModel = { 
       UserName: $scope.UserName, 
       PassWord: $scope.Password 
      }; 

      var response = loginRepository.VerifyVisitor.query(loginModel); 
      alert(response); 

     } 
    } 
}); 

Error: loginModel is not defined 

被調用的Web Api方法。

[HttpPost] 
     public string VerifyLogin(UserLoginDomainModel loginModel) 
     { 
      var msg = _loginService.Login(loginModel); 
      return msg; 
     } 

是使用$ resource發佈請求並傳遞複雜對象的正確方法。

+0

錯誤發生在Angular或.NET端? –

+0

@ MikeFeltman-錯誤來自角js中的工廠文件。它無法得到什麼是登錄模式。所以我想知道即時通過或不通過,如果不是這樣的話,那是什麼方式。 – ankur

+0

看着你發佈的代碼,你似乎沒有注入依賴關係,我們是否應該假設這樣做? – rrd

回答

0

您的服務應該是這個樣子:

visitorApp.factory('loginRepository', function ($resource) { 
    return { 
     VerifyVisitor: $resource('/api/VisitorWeb/VerifyLogin', {}, 
     { 
     query: { 
      method: 'POST', 
      params: {loginModel: '@loginModel'}, 
      isArray: true } 
     }) 

    }; 

}); 

參數變量用引號括起來,並用@前綴。

+0

,它似乎工作。我也在服務器端接電話。我通過使用這個var response = loginRepository.VerifyVisitor.query(loginModel);來調用這個方法。現在我正在等待服務器的響應,並用它做一些事情。但值不在響應對象 – ankur

+1

您可能希望在此時在服務器上設置斷點,檢查傳入對象並確保它是您所期望的,然後從那裏開始。 –

+0

對於UR HELP來說很重要 - 但我想解釋的是不同的。 – ankur