我正在调用在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为空。
任何想法???
答案 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>