使用AngularJs在json帖子上的Servicestack +模型绑定

时间:2013-08-02 04:04:55

标签: rest angularjs servicestack

我正在调用在serviceStack中开发的REST服务,我使用angularJs作为客户端但我的问题是由于某种原因我无法将我的json模型与requestDTO绑定。

我的angularJs代码:

我有一个AngularJs服务

angular.module('mseApp.services', ['ngResource']).
    factory('loginService',
        function ($resource) {
            return $resource('/Api/User/login', '',
                {
                    query: {
                        method: 'POST',
                        params:{  }
                    }
                });
        });

控制器:

function loginCtrl($scope, loginService) {
   $scope.submit = function () {
       var user = loginService.query({loginRequest:$scope.loginRequest});
   };
}

查看:

<div>
     <div ng-model="loginRequest">
         <form ng-submit="submit()"  ng-controller="loginCtrl">

             <input id="username" ng-model="loginRequest.Username"  type="text" name="text"  />
             <input id="password" ng-model="loginRequest.Password" type="text" name="text" />
             <input type="submit" id="submit" value="Submit" />
             <span ng-model="Username"></span>


         </form>

     </div>
</div>
点网侧的

我的DTO

 public class LoginRequest
    {
        public string Username { get; set; }
        public string Password { get; set; }

    }

 public UserResponse Post(LoginRequest loginRequest)
 {
 }

一切都很好,唯一的问题是我的服务方法上的LoginRequest为空。

任何想法???

2 个答案:

答案 0 :(得分:3)

发送

query($scope.loginRequest)

而不是

query({loginRequest:$scope.loginRequest})

这将解决您的问题。

答案 1 :(得分:1)

您还可以利用查询的$ promise对象将绑定处理延迟到$ scope

function loginCtrl($scope, loginService) {
  $scope.submit = function () {
  var user = loginService.query.$promise.then(function (promise) {
    $scope.userResponse = promise.d;
   });
 };
}

然后绑定到(假设您的用户名是UserResponse.Username),就像这样

<span ng-model="UserResponse.Username"></span>