【问题标题】:Passing complex object from angular js factory to web api using $resource使用 $resource 将复杂对象从 Angular js 工厂传递到 Web api
【发布时间】:2016-05-23 22:13:00
【问题描述】:

我将一个对象传递给 Angular 工厂,它抛出错误。

工厂:

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 发布请求并传递复杂对象的正确方法吗?

【问题讨论】:

  • 错误发生在 Angular 还是 .NET 端?
  • @MikeFeltman- Angular js 中的工厂文件中出现错误。它无法获得什么是登录模型。所以我想知道我是否正确通过,如果不是这样,那是什么方法。
  • 查看您发布的代码,您似乎没有注入依赖项,我们应该假设已经完成了吗?
  • @rrd 是的,你可以假设

标签: javascript angularjs asp.net-web-api


【解决方案1】:

您的服务应如下所示:

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

    };

});

参数变量用引号括起来并以@ 为前缀。

【讨论】:

  • 通过使用上述更改,它似乎工作。我也在服务器端接到电话。我通过使用这个 var response = loginRepository.VerifyVisitor.query(loginModel); 来调用这个方法。现在我正在等待来自服务器的响应并用它做一些事情。但值没有出现在响应对象中
  • 此时您可能想在服务器上设置一个断点,检查传入的对象并确保它是您所期望的,然后从那里开始。
  • 感谢您的帮助-但我想解释的是不同的。
猜你喜欢
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
  • 2019-08-20
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多