Javascript 调用$resource后,是否运行摘要循环以便在我的视图中重新显示数据?

Javascript 调用$resource后,是否运行摘要循环以便在我的视图中重新显示数据?,javascript,angularjs,Javascript,Angularjs,我创建了以下问题,以使用$promise for finally和$resource for version 1.2.2及更高版本来寻求帮助。我问这个问题是因为据我所知,文档中甚至没有提到它,也没有好的例子:-( 答案是: //Using the promise on your resource. function success(){/**success*/}; function error(){/**failure*/}; function last(){/**finally*/}; en

我创建了以下问题,以使用$promise for finally和$resource for version 1.2.2及更高版本来寻求帮助。我问这个问题是因为据我所知,文档中甚至没有提到它,也没有好的例子:-(

答案是:

//Using the promise on your resource.
function success(){/**success*/};
function error(){/**failure*/};
function last(){/**finally*/};
entityResource.save(data,success,error).$promise.finally(last);
然而,让我困惑的是以下陈述:

"By using angular's $q and .then You will invoke a $digest cycle. 
Which will update your view, which is usually fantastic."
这是否意味着如果我使用上面的代码调用我的资源,那么我将不会更新视图?我当前正在做的是手动更新视图,如下所示:

entityResource.update({ id: entityId }, data,
      function (result) {
         angular.copy(result, $scope.modal.data);
      },error).$promise.finally(last);

         ...

这是我做这件事的正确方法吗?

对不起,我之前没说清楚。我会尽量解释清楚的

什么
  • $resource
    $http
    $q
    的高级抽象
  • $resource
    实例方法中用于更改数据绑定值的任何回调都将更新视图,因为将运行摘要循环。(是,请回答标题问题)
如何
  • $resource
    方法将在内部调用的
    $http
    方法的承诺上设置的成功和错误回调中执行成功和错误回调。。。
    • 例如,
      $http(config)。然后(internalSuccess,internalError)
  • $resource
    接受该值,即另一个承诺,并设置
    $promise
    属性,允许您根据需要添加
    最终
    回调
  • 那么对于
    $resource
    内部来说很重要,因为该方法将由
    $rootScope.evalAsync
    执行,该方法的状态至少会发生一个摘要循环
    • --源代码有更好的文档…:P
所有这些都说明了对
then
子句(或
$resource
回调)中的数据绑定
$scope
属性所做的任何修改这是因为angular实现了
$q
,或者
$q
实现了
$rootScope.evalAsync

在您的特定情况下,您只需要在成功时使用资源中的值修改
$scope
属性。无论您是作为浅拷贝还是作为深拷贝(angular.copy)执行此操作,都不重要。当然,除非您的资源实例位于作用域上。然后它将自动更新。(因为这是$resource提供的抽象)


我希望这能很好地解释问题!

它会更新视图。