我有一个各种单元格的网格,用户可以将图像拖放到其中。当放在网格上时,会进行$ resource动作调用并更新应用程序。
我想要实现的是在更新调用处于活动状态时在每个单元格中加载一个加载器。 EG用户丢弃单元格中的项目并显示旋转加载程序。返回调用后,将从单元格中删除加载程序并更新单元格。
所有单元格都运行相同的调用,其中传递给调用的数据不同。我的问题是如何跟踪返回映射到的单元格。使用此功能,用户可以一次加载多个单元。当然,如果一切正常,调用的结果可以返回单元格位置,并可用于删除加载器。 EG删除一个项目,调用,调用返回包含单元格位置的数据,JS然后使用单元格位置数据删除加载器并更新单元格。
我的问题是如果完全失败会发生什么(出于什么原因)。应用程序如何知道从哪个单元格中删除加载程序。 EG将一个项目放在一个单元格上并进行呼叫。 A是单元格中显示的加载程序,应用程序等待返回。让我们说返回永远不会或返回完成错误。它如何知道失败的呼叫属于哪个小区?
我正在寻找的是一种在$ resource调用中指定可以在promise响应中访问的数据的方法。 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中提取。我并不是说这是最好的方法。 我只是希望能够在没有返回单元位置数据的情况下删除加载器。
答案 0 :(得分:0)
我不确定为什么我之前没有看到它,但它是使用$ 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);
});