可用示例代碼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沒有提到這個問題。
感謝您指出我如何測試使用IE9 plunks正確的方向! –