Angularjs Angular Js-select下拉列表在页面刷新时有时会变为空,为什么?

Angularjs Angular Js-select下拉列表在页面刷新时有时会变为空,为什么?,angularjs,asynchronous,dropdown,Angularjs,Asynchronous,Dropdown,我有一个简单的下拉列表,是在select的帮助下制作的。下拉列表在正常流程中工作正常,但当我更新我的页面或有时刷新我的页面时,下拉列表中的选定值将变为空,因为后端的响应延迟 Html <div class="col-lg-12 col-md-12" ba-panel ba-panel-title="Registration" ba-panel-class="" ng-init="driver.phoneNumberPrefixFunc();"> <div clas

我有一个简单的下拉列表,是在select的帮助下制作的。下拉列表在正常流程中工作正常,但当我更新我的页面或有时刷新我的页面时,下拉列表中的选定值将变为空,因为后端的响应延迟

Html

      <div class="col-lg-12 col-md-12" ba-panel ba-panel-title="Registration" ba-panel-class="" ng-init="driver.phoneNumberPrefixFunc();">

<div class="col-lg-12 col-md-12" ba-panel ba-panel-title="Registration" ba-panel-class="" ng-init="driver.phoneNumberPrefixFunc();driver.getVehicleTypes();driver.getUnArchBankListing()">

  <form class="form-vertical" name="driver.registrationForm" ng-submit="driver.register(driver.registrationInformation);">

            <select class="form-control" id="phonePrefix" name="phonePrefix" ng-model="driver.registrationInformation.phoneNumberPrefix"
                required>
                <option value="" selected>Select Code</option>
                <option ng-repeat="item in driver.registrationInformation.phonePrefix" value="{{item.code}}">{{item.code}}</option>
            </select>

        </form>

    </div>
editDriverDetails
函数在我编辑表单时被调用。正如您所看到的,我正在开始调用
phoneNumberPrefixFunc()
,因为我需要phonenumber前缀列表。下面是功能代码

function phoneNumberPrefixFunc(data) {
        usSpinnerService.spin('spinner-1');
        return driverServices.phoneNumberPrefix(data).then(function (response) {
            if (response.success == '1') {
                usSpinnerService.stop('spinner-1');
                driver.registrationInformation.phonePrefix = response.data.countryCode;
            } else {
                usSpinnerService.stop('spinner-1');
                toastr.error(response.message);
            }
        });
    };

函数
phoneNumberPrefixFunc
将在数组中显示对象列表,以便下拉和
driver.registrationInformation。phoneNumberPrefix
是我在
editDriverDetails
函数中获得的预选值。现在,有时
phoneNumberPrefixFunc
editDriverDetails
的响应很晚,这就是我的下拉列表没有填充的原因。我怎样才能解决这个问题?

我是这样解决的

Routes.js

 (function () {
        'use strict';
        angular.module('Driver', []).config(routeConfig);

        /** @ngInject */
        function routeConfig ($stateProvider, $urlRouterProvider) {

            function authentication (GlobalServices, $q, localStorageService, $state) {
                var d = $q.defer();
                var checkUser = localStorageService.get('user');
                if (checkUser !== null) {
                    d.resolve(checkUser);
                } else {
                    GlobalServices.currentUser().then(function (data) {
                        if (data.success === 0) {
                            $state.go('login');
                        } else {
                            localStorageService.set('user', data.data.account);
                            d.resolve(data.user);
                        }
                    });
                }
                return d.promise;
            }

            function phoneNumberPrefix ($q,driverServices) {
                var d = $q.defer();
                driverServices.phoneNumberPrefix().then(function (data) {
                    d.resolve(data.data.countryCode);
                });
                return d.promise;
            }

            function getVehicleTypes ($q,driverServices) {
                var d = $q.defer();
                driverServices.vehicleType().then(function (data) {
                    d.resolve(data.data.vehicleTypes);
                });
                return d.promise;
            }

            function getUnArchBankListing ($q,bankServices) {
                var d = $q.defer();
              bankServices.getUnArchiveBankListing({type : 'unarchive'}).then(function (data) {
                    d.resolve(data.data.banks);
                });
                return d.promise;
            }
  $stateProvider
                .state('drivers', {
                    url: '/drivers',
                    template: '<ui-view  autoscroll="true" autoscroll-body-top></ui-view>',
                    abstract: true,
                    // controller: 'DriverMainController',
                    title: 'Drivers',
                    sidebarMeta: {
                        icon: 'fa fa-motorcycle',
                        order: 3,
                    },
                    resolve: {
                        $user: authentication,
                        phoneData : function () {},
                        vehcileTypesData: function () {},
                        banksData: function () {}
                    },
                })
                .state('driverView', {
                    url: '/driver/:driverId',
                    templateUrl: '../app/pages/driver/driverView.html',
                    title: 'Profile',
                    controller: 'driverCtrl',
                    controllerAs: 'profile',
                    resolve: {
                        $user: authentication,
                        phoneData : function () {},
                        vehcileTypesData: function () {},
                        banksData: function () {}
                    },
                })
                .state('driverEdit', {
                    url: '/driver-edit/:driverId',
                    params: {
                        driverDetails: null,
                        driverId : null
                    },
                    templateUrl: '../app/pages/driver/registration/registration.html',
                    title: 'Driver Profile',
                    controller: 'driverCtrl',
                    controllerAs: 'driver',
                    resolve: {
                        $user: authentication,
                        phoneData : function ($q, driverServices) {
                            var d = $q.defer();
                            return phoneNumberPrefix($q, driverServices);
                        },
                        vehcileTypesData: function ($q, driverServices) {
                            var d = $q.defer();
                            return getVehicleTypes($q, driverServices);
                        },
                        banksData: function ($q, bankServices) {
                            var d = $q.defer();
                            return getUnArchBankListing($q, bankServices);
                        }
                    }
                });

            $urlRouterProvider.when('/drivers', '/drivers/registration');
        }

    })();
    (function () {
    angular.module('Driver').controller('driverCtrl', driverCtrl);

    driverCtrl.$inject = ['$scope', '$state','phoneData','vehcileTypesData','banksData'];

    function driverCtrl($scope, $state,phoneData,vehcileTypesData,banksData) {
        if(phoneData){
            driver.phonePrefix = phoneData;
                }
        if(banksData){
            driver.bankListing = banksData;
                }
        if(vehcileTypesData){
            driver.vehicleTypes = vehcileTypesData;
        }
 }
})();

您的问题不清楚,请重新设置框架或提供更多详细信息/代码,以便我们更好地帮助您。@sachet请查看我编辑的问题
    (function () {
    angular.module('Driver').controller('driverCtrl', driverCtrl);

    driverCtrl.$inject = ['$scope', '$state','phoneData','vehcileTypesData','banksData'];

    function driverCtrl($scope, $state,phoneData,vehcileTypesData,banksData) {
        if(phoneData){
            driver.phonePrefix = phoneData;
                }
        if(banksData){
            driver.bankListing = banksData;
                }
        if(vehcileTypesData){
            driver.vehicleTypes = vehcileTypesData;
        }
 }
})();