我在Angular应用程序中使用Restangular。我可以通过后端成功地提取数据。但是,我在提交表单后很难更新数据。 PUT方法将起作用并将请求发送到API,但有效负载不正确。它正在发送原始数据。我似乎无法将重新数据化的数据显示在我的页面上。
我可以通过以下方式对视图中的数据进行响应:
$scope.user = Restangular.one('user', 1234).get().$object;
除非我输入$object
。
如果我只是使用:
$scope.user = Restangular.one('user', 1234).get();
我的观看次数不显示用户信息,{{user}}
将{"restangularCollection":false,"reqParams":null,"parentResource":null}
。
据我了解,Restangular会附加不同的函数以启用其余的操作,这就是Restangular.one('user', 1234).get().$object
不可取的原因。
我尝试根据文档(https://github.com/mgonto/restangular#how-can-i-access-the-unrestangularized-element-as-well-as-the-restangularized-one)将setResponseExtractor()放入我的配置中,但它被setResponseInterceptor()覆盖,我需要将响应从getList()转换为数组。
这是我的控制器:
props.controller('UserEditController', function($scope, $routeParams, $location, Restangular) {
var UserEdit = Restangular.one('users', $routeParams.userId).get();
$scope.user_edit = Restangular.copy(UserEdit);
console.log($scope.user_edit);
$scope.save = function() {
$scope.project.put().then(function() {
$location.path('/');
});
});
我的表格:
<h1>Edit Profile</h1>
<form ng-submit="save_user()">
<label for="first_name">First Name:
<input type="text" name="first_name" ng-model="user_edit.first_name" ng-value="user_edit.first_name" /><br />
<label for="last_name">Last Name:
<input type="text" name="last_name" ng-model="user_edit.last_name" ng-value="user_edit.last_name"/><br />
<label for="email">Email:
<input type="text" name="email" ng-model="user_edit.email" ng-value="user_edit.email"/><br />
<label for="position">Position:
<input type="text" name="position" ng-model="user_edit.position" ng-value="user_edit.position"/><br />
<button type="submit">Save</button>
<a href="#/users/{{user_edit.id}}">Cancel</a>
</form>
我查看了Plunker(http://plnkr.co/edit/d6yDka)上的Restangular示例,它让我离开了,但我似乎无法弄清楚这一点。这让我发疯了。有人可以帮忙吗?
答案 0 :(得分:0)
这只解决问题的。$对象部分。
Restangular用承诺做所有事情。在可以访问响应数据之前,必须履行/解决承诺。
// Assign data to $scope once response is returned.
Restangular.one('users', $routeParams.userId).get().then(function(user){
$scope.user_edit = user;
});
然后在您的视图中放置{{user_edit}}应显示用户数据。