angularjs无法为范围分配ngresource响应

时间:2015-08-25 11:52:47

标签: javascript angularjs coffeescript

我在coffeescript中有一个角度函数,如下所示:

$scope.personalDone = ->
    user = angular.copy($scope.user)
    saved_user = Api.User.save user
    $scope.classroom.user = saved_user
    $scope.classroom.user_id = saved_user.id
    console.log(saved_user)
    console.log($scope.classroom.user)
    console.log($scope.classroom.user.id)
    console.log($scope.classroom.user_id)

我正在尝试根据响应的ID更新$ scope.classroom.user_id,但无济于事。以下是控制台日志的结果:

  1. 资源{last_name:“Baggins”,first_name:“Frodo”,id:123}
  2. 资源{last_name:“Baggins”,first_name:“Frodo”,id:123}
  3. 未定义
  4. 未定义
  5. 如何将Api响应分配给范围变量?

1 个答案:

答案 0 :(得分:1)

问题是,save()异步操作,因此如果您立即尝试使用该结果,则会失败。 $resource在后​​台执行的操作是返回一个空对象,该对象稍后将由服务器返回的用户填充。因此,如果您尝试立即访问它,它将只是一个空对象。

但是,该对象确实具有$promise属性,允许您等到操作完成,然后使用新对象执行操作。试试这个:

$scope.personalDone = ->
  user = angular.copy($scope.user)
  saved_user = Api.User.save user
  saved_user.$promise.then ->
    $scope.classroom.user = saved_user
    $scope.classroom.user_id = saved_user.id