簡體   English   中英

如何防止angularJS壓縮腳本錯誤?

[英]How can I prevent angularJS from squelching script errors?

在我的AngularJS示例項目中,我知道我有一個服務方法,應該拋出JavaScript錯誤。

使用Firebug,我確認從$ resource解決承諾時拋出了JS錯誤(TypeError:phone.images未定義); 但是,該錯誤永遠不會出現在Firebug控制台中。

如何獲得快速“失敗”的資源並在調用堆棧中傳播錯誤?

服務代碼如下:

var phonecatServices = angular.module('phonecatServices', ['ngResource']);

phonecatServices.factory('Phone', ['$resource',
  function($resource){
    return $resource('phones/:phoneId.json', {}, {
      query: {method:'GET', params:{phoneId:'phones'}, isArray:true}
    });
  }]);

這是控制器(靜默失敗):

phonecatControllers.controller('PhoneDetailCtrl', ['$scope', '$routeParams', 'Phone',
  function($scope, $routeParams, Phone) {
    $scope.phone = Phone.get({phoneId: $routeParams.phoneId}, function(phone) {
      //JS error SHOULD be thrown here:
      $scope.mainImageUrl = phone.images[0]; 
    });

    ...
}]);

我不想讓代碼無聲地失敗! 我該如何解決?

理想情況下,我想在整個框架中對其進行修復,而不是為每個服務或資源調用添加特殊的錯誤處理代碼。

您需要將錯誤回調添加到get調用中:

Phone.get({phoneId: $routeParams.phoneId}, function(phone){
  // Do Stuff with phone object
}, function(error) {
  alert("Y U NO RETURN PHONE?");
  // Handle error accordingly
});

這是$resource文檔

如果您想通過angular框架來一般性地處理AJAX請求的錯誤,那么您可能希望使用http攔截器 (請參閱“攔截器”部分)。 這種范例要求所有請求都以通用方式處理通過您的攔截器服務的所有請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM