2015-08-25 36 views
0

ngresource響應我有一個角功能的CoffeeScript像這樣:angularjs不能分配給範圍

$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的: 「巴金斯」,如first_name 「佛羅多」,ID:123}
  2. 資源{last_name的: 「巴金斯」,如first_name 「佛羅多」, ID:123}
  3. 不確定
  4. 不確定

如何分配該API響應範圍變量?

回答

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 
+0

非常好!奇蹟般有效! –