1

可用示例代碼here & here。由於Plunker不太支持IE8或IE9,因此可以通過在現代Web瀏覽器中打開Plunker示例,然後在單獨的窗口中啓動Run窗格並在IE8或IE9中打開該URL來運行示例代碼。AngularJS 1.2.7 IE8資源bug

使用$ resource.query或$ resource.get作出RESTful的電話時,承諾未能返回在IE8或IE9任何結果,如果自定義操作定義和使用:

factory('ResourceService2', ['$resource', '$q', function($resource, $q) { 
    var factory = { 
     query: function() { 
      var deferred = $q.defer(); 

      $resource('data.json', {'cacheSlayer' : new Date().getTime()}, { 
       'query': { 
        method: 'GET', 
        responseType: 'json', 
        isArray: true 
      }}).query(function (data) { 
       deferred.resolve(data); 
      }); 

      return deferred.promise; 
     } 
    }; 
    return factory; 
}]). 

查詢() :

ResourceService2.query().then(function (response) { 
    $scope.resource2Rows = response; 
}); 

然而,這同樣調用成功返回時自定義操作時沒有定義或使用結果:

factory('ResourceService', ['$resource', '$q', function($resource, $q) { 
    var factory = { 
     query: function() { 
      var deferred = $q.defer(); 

      $resource('data.json', { 
       'cacheSlayer' : new Date().getTime() 
      }, {}).query(function (data) { 
       deferred.resolve(data); 
      }); 

      return deferred.promise; 
     } 
    }; 
    return factory; 
}]). 

查詢():

ResourceService.query().then(function (response) { 
    $scope.resourceRows = response; 
}); 

使用$ HTTP也是成功的:

factory('HttpService', ['$http', '$q', function($http, $q) { 
    var factory = { 
     query: function() { 
      var deferred = $q.defer(); 

      $http.get('data.json', { 
       params: { 
        'cacheSlayer' : new Date().getTime() 
      }}).success(function (data) { 
       deferred.resolve(data); 
      }); 

      return deferred.promise; 
     } 
    }; 
    return factory; 
}]). 

get()方法:

HttpService.query().then(function (response) { 
    $scope.httpRows = response; 
}); 

這是在IE8/IE9中的錯誤?必須爲IE8/IE9兼容性定義自定義操作的其他參數?從1.2.7開始,Angular Developer's Guide沒有提到這個問題。

+0

感謝您指出我如何測試使用IE9 plunks正確的方向! –

回答

0

CORS在ie8/9中沒有完全實現,所以這很可能是您的問題。下面是關於它的MSDN文章:

http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

+1

請求是相同的來源。實際上,使用AngularJS v1.0.8的自定義動作的示例Plunker只需替換