Rah*_*rma 3 angularjs angular-controller
我有一个在 Chrome 上运行良好的控制器代码,但在 IE 10 上运行时返回相同的代码
ReferenceError: 'Promise' is undefined
Run Code Online (Sandbox Code Playgroud)
返回错误的函数是:
new Promise(function(resolve) {
MetaModel.load($scope, (regionExist ? reqParmRegion[1] : reqParmRegion), (screenExist ? reqParmScreen[1] : reqParmScreen), resolve);
}).then(function(){
loadRelationshipByStep($scope.preStep);
if($rootScope.regionId === 'us') {
$rootScope.currRel = 'itself';
}
if($rootScope.screenId.indexOf('search') !== -1 ){
EnumerationService.loadEnumerationByTab();
}
// load data for tab click
if($rootScope.currRel !== 'undefined' && $rootScope.currRel !== 'itself' && $scope.regionId !== 'us'){
$scope.loadDataByTab($rootScope.currRel);
} else if($rootScope.resourceHref !== undefined) {
var params = {};
resourceFactory.get($rootScope.resourceHref, params, $rootScope.headers).success(function(responseData){
var data = responseData.data || responseData;
if (data) {
$scope.data=data;
EnumerationService.executeEnumerationFromBackEnd(data, 'create');
if($rootScope.regionId === 'us'){
EnumerationService.executeEnumerationFromBackEnd(data, 'fetch');
}
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
我需要添加任何 $promise 变量吗?
IE原生不支持原生javascript Promise。请参阅MDN 上的浏览器兼容性。
Angular 包括$q提供承诺功能的服务。您可以使用该对象创建延迟对象$q.defer()并返回该对象的承诺。
我认为等效的代码是:
// create the deferred object
var deferred = $q.defer();
// pass the resolve method as the callback
MetaModel.load($scope, (regionExist ? reqParmRegion[1] : reqParmRegion),
(screenExist ? reqParmScreen[1] : reqParmScreen), deferred.resolve);
// chain actions onto the promise.
deferred.promise.then(function(){
loadRelationshipByStep($scope.preStep);
if($rootScope.regionId === 'us') {
$rootScope.currRel = 'itself';
}
if($rootScope.screenId.indexOf('search') !== -1 ){
EnumerationService.loadEnumerationByTab();
}
// load data for tab click
if($rootScope.currRel !== 'undefined' && $rootScope.currRel !== 'itself' && $scope.regionId !== 'us'){
$scope.loadDataByTab($rootScope.currRel);
} else if($rootScope.resourceHref !== undefined) {
var params = {};
resourceFactory.get($rootScope.resourceHref, params, $rootScope.headers).success(function(responseData){
var data = responseData.data || responseData;
if (data) {
$scope.data=data;
EnumerationService.executeEnumerationFromBackEnd(data, 'create');
if($rootScope.regionId === 'us'){
EnumerationService.executeEnumerationFromBackEnd(data, 'fetch');
}
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10849 次 |
| 最近记录: |