2016-05-23 82 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