使用$ resource将复杂对象从角度js工厂传递到web api

时间:2016-05-23 14:01:19

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

我正在将一个对象传递给角度工厂,它正在抛出错误。

工厂:

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

1 个答案:

答案 0 :(得分:0)

您的服务应如下所示:

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

    };

});

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