javascript - AngularJS无法将ngresource响应分配给范围

标签 javascript angularjs coffeescript

我在 CoffeeScript 中有一个 Angular 函数,如下所示:

$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. 未定义

如何将 Api 响应分配给作用域变量?

最佳答案

问题是,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

关于javascript - AngularJS无法将ngresource响应分配给范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32203295/

相关文章:

javascript - td onclick 不工作

javascript - 在 typescript 中导入json

javascript - 所选选项的 Angular ng-init 不起作用

javascript - 在 Webstorm/Intellij 中调试 Coffeescript jasmine-node 测试

javascript - grunt 找不到模块 'coffee-script'

javascript - 使用 Javascript 将 mousemove 监听器添加到视频元素的控件

angularjs - 尝试定义和配置我的自定义提供程序时出现问题

javascript - 解析 ng-show 时出现 Angular 错误

javascript - 如何通过匹配特定字符串将一个 ng-model 中的值绑定(bind)到另一个

javascript - AngularJS POST 空请求?