我在控制器中有以下方法:
$scope.showProductDetails = function (size,product) {
$scope.showLoader('Loading the details of the product. Please wait...');
var modalInstance = $modal.open({
templateUrl: 'productDetail.html',
controller: 'ProductDetailController',
size: size,
resolve:{
productDetails: function (){return productsFactoryHelper.ProductDetail.query({productid:product.id},function()
{
$scope.hideLoader();
},function(error)
{
commonFactory.Pop('error','This product is not available at this moment. Please try again later. If the problem persists contact a system administrator');
$scope.hideLoader();
});}
}
});
};
正如您所看到的,我打开了一个模态面板,然后使用'解决问题'传递我从服务器检索的对象。 这个对服务器的调用可以启动异常,所以我在回调函数中管理这种情况以获得错误,但是如果发生错误我无法避免打开模态面板。我想知道是否有办法在不改变代码结构的情况下做到这一点。我的意思是我可以实现那个只是在打开模态面板之前完成调用的调用,并且取决于调用是否成功,打开模态面板,但我想知道是否有办法做到这一点在解决方案中,不改变方法的结构。
由于
答案 0 :(得分:1)
内部错误回调函数,再次返回错误。您需要返回一个promise,因此,如果返回的promise是错误的,则不应该打开它。
resolve:{
productDetails: function (){return productsFactoryHelper.ProductDetail.query({productid:product.id},function()
{
$scope.hideLoader();
},function(error)
{
commonFactory.Pop('error','This product is not available at this moment. Please try again later. If the problem persists contact a system administrator');
$scope.hideLoader();
return error
});}
}
答案 1 :(得分:1)
我认为在打开模态之前进行调用的想法在这种情况下最有意义。换句话说,只有在拥有数据时才打开模态。
您的另一个选择是在模态中显示错误并相应地更改内容/按钮。