2

我正在调用在 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 为空。

有任何想法吗???

4

2 回答 2

3

只需发送

query($scope.loginRequest)

代替

query({loginRequest:$scope.loginRequest})

这将解决您的问题。

于 2013-08-02T05:12:25.823 回答
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>
于 2013-10-09T03:18:20.280 回答