【问题标题】:angularjs cant assign ngresource response to scopeangularjs无法将ngresource响应分配给范围
【发布时间】:2015-08-25 20:01:56
【问题描述】:

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

如何将 Api 响应分配给范围变量?

【问题讨论】:

    标签: javascript angularjs coffeescript


    【解决方案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
    

    【讨论】:

    • 太棒了!像魅力一样工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多