访问Restangularized数据

时间:2014-03-19 00:43:35

标签: angularjs restangular

我在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示例,它让我离开了,但我似乎无法弄清楚这一点。这让我发疯了。有人可以帮忙吗?

1 个答案:

答案 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}}应显示用户数据。