【问题标题】:Angular JS tracking between $resource action and return $promise$resource 操作和返回 $promise 之间的 Angular JS 跟踪
【发布时间】:2015-12-14 15:07:01
【问题描述】:

我有一个由各种单元格组成的网格,用户可以将图像拖放到其中。当拖放到网格上时,会调用 $resource 操作并更新应用程序。

我想要实现的是在更新调用处于活动状态时在每个单元格中都有一个加载器。例如,用户在单元格中放置一个项目,并显示一个旋转的加载器。一旦调用返回,加载程序就会从单元格中移除并更新单元格。

所有单元格运行相同的调用,其中传递给调用的数据不同。我的问题是如何跟踪返回映射到的单元格。使用此功能,用户可以一次加载多个单元格。当然,如果一切正常,调用的结果可以返回单元格位置,并且可以用来删除加载器。 EG 删除一个项目,进行调用,调用返回包含单元格位置的数据,JS 然后使用单元格位置数据删除加载器并更新单元格。

我的问题是如果它完全失败(无论出于何种原因)会发生什么。应用程序如何知道要从哪个单元格中删除加载程序。 EG 将一个项目放在一个单元格上并进行呼叫。 A 是加载器显示在单元格中,应用程序等待返回。可以说退货永远不会出现或退货完全错误。它如何知道失败的调用属于哪个小区?

我正在寻找的是一种在 $resource 调用中指定可以在承诺响应中访问的数据的方法。 EG

rest = $resource('www.api-source.com/layout/34/cells','post',{cell_locaiton:'2x4'},{'post': {method:'GET', isArray: false}});
rest.setTracker('2x5');
rest.post( );     

rest.$promise.then(function(data) {
    $scope.removeLoader(data.cell_data.location);
},function(data, status, headers, config) {
   cell = rest.getTracker( );
   $scope.removeLoader(cell);
}

在 $resource 中设置一个值,然后从 $promise 中提取一个值。我并不是说这是最好的方法。 如果没有返回单元格位置数据,我只想能够删除加载器。

【问题讨论】:

    标签: javascript angularjs asynchronous angular-promise angular-resource


    【解决方案1】:

    我不知道为什么我之前没有看到这个,但是使用 $promise.finally( ) 回调解决了这个问题。这能够获取我需要的数据并使用它来清除加载程序,无论调用是否失败。

    cell = '2x4';
    rest = $resource('www.api-source.com/layout/34/cells','post',{cell_locaiton:cell},{'post': {method:'GET', isArray: false}}).post( );     
    
    rest.$promise.then(function(data) {
        $scope.removeLoader(cell);
    },function(data, status, headers, config) {
       $scope.throwError('Fail');       
    }).finally(function(){
       $scope.removeLoader(cell); 
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-12
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 2019-01-07
      • 2018-11-26
      • 2016-09-16
      相关资源
      最近更新 更多