這是我的代碼如何在angularjs中限制異步調用?
.state('appSetting', { abstract: true, url: '/appSetting/:appId', templateUrl: appUrl + '/AppSetting/Index', controller: 'AppSettingCtrl' })
.state('appSetting.majorObjectList', { url: '/majorObject', templateUrl: appUrl + '/MajorObject/List', controller: 'MajorObjectsCtrl' })
MajorObjectsCtrl = [
'$scope', '$state', 'uiGridConstants', '$stateParams', '$rootScope', 'dataFactory', 'cacheKeys', '$window', 'ngDialog', '$filter', function ($scope, $state, uiGridConstants, $stateParams, $rootScope, dataFactory, cacheKeys, $window, ngDialog, $filter) {
"use strict";
$scope.loadMajorObjects = function() {
$scope.getData();
$scope.objectsList.data = $scope.filterData;
};
}];
AppSettingCtrl = [
'$scope', '$state', '$stateParams', '$window', '$sessionStorage', 'dataFactory', 'ngDialog', '$q', function ($scope, $state, $stateParams, $window, $sessionStorage, dataFactory, ngDialog, $q) {
"use strict";
$scope.getData = function() {
var appId = $scope.currentAppId;
var type = $scope.majorObject.type;
if (_.isEmpty(appId)) {
return;
}
var deferred = $q.defer();
// var cacheKey = { key: cacheKeys.objectTypeList($scope.asCacheOptions({ ObjectType: type })) };
dataFactory.get("/MajorObject/All?applicationId=" + $scope.currentAppId + "&type=" + type)
.then(function (result) {
$scope.selectAppSetting('Major Objects');
$scope.filterData = result.data.data;
deferred.resolve($scope.filterData);
});
return deferred.promise;
};
}];
<div ng-controller="AppSettingCtrl" class="row appReady">
@RenderPage("_TopNavBar.cshtml")
<button id="myCheck" ng-click="showSearchPopUp()" class="btn btn-primary"><i class="fa fa-plus"> <span>Search</span> </i> </button>
</div>
在上面的代碼中調用getData()
從majorObjectCtrl
。控制器去appSettingCtrl
getData()
功能,然後立即轉移到majorObjectCtrl
,下一步從appSettingCtrl
加載服務的數據。但是在我從服務中加載數據後,我想要轉移到majorObjectCtrl
解釋代碼,請! –