2016-03-11 32 views
2

我有多个删除请求,前面有OPTIONS飞行前请求。但是OPTIONS请求后控制得到$q.all。这里是我的代码:

companyMasterC.confirmDelete = function(ev, text) { 
    simpleDialog.verifyDelete(ev, text).then(function() { 
     companyMasterC.deletePromise = companyMasterC.deleteSelected().then(function(response) { 
       companyMasterC.getCompanies(); 
      }, function(error) { 
       console.log(error); 
      }); 
    }); 
}; 

companyMasterC.deleteSelected = function(){ 
    var promises = companyMasterC.selectedRows.map(function(selectedRow) { 
     return company.delete({id:selectedRow.id}); 
    }); 
    return $q.all(promises); 
}; 

因此,这里发生的事情在网络选项卡:首先,进行OPTIONS请求,然后GET请求进行companyMasterC.getCompanies();DELETE请求已完成的应该执行。并在GET请求DELETE请求被执行后。

回答

2

变化

return company.delete({id:selectedRow.id}); 

return company.delete({id:selectedRow.id}).$promise; 

修改代码:

companyMasterC.confirmDelete = function(ev, text) { 
    simpleDialog.verifyDelete(ev, text).then(function() { 
     companyMasterC.deletePromise = companyMasterC.deleteSelected().then(function(response) { 
       companyMasterC.getCompanies(); 
      }, function(error) { 
       console.log(error); 
      }); 
    }); 
}; 

companyMasterC.deleteSelected = function(){ 
    var promises = companyMasterC.selectedRows.map(function(selectedRow) { 
     return company.delete({id:selectedRow.id}).$promise; 
    }); 
    return $q.all(promises); 
}; 
+1

这个问题就解决了这个问题,但company.delete({ID:selectedRow.id})是已经是一个承诺。那么为什么加入$ promise。 –