SORU
23 EYLÜL 2013, PAZARTESİ


(Açısal-uı-router) çözme işlemi sırasında yükleme animasyon Show

Bu iki parçalı bir soru

  1. Gidermek özelliği içinde $stateProvider kullanıyorum.() devlet denetleyicisi yüklemeden önce bazı server veri kapmak için. Nasıl yükleniyor bir animasyon bu işlem sırasında göstermek için alma hakkında gitmek istiyorsunuz?

  2. Ayrıca gidermek özelliği kullanmak çocuk durumları var. Sorun uı-router sonuçlandırmak için istediğiniz gibi görünüyortümyüklemeden önce giderirherhangi birdenetleyicisi. Ana denetleyicileri kendi çözer çözümlenmiş bir kez yüklemek için, tüm alt çözümler için beklemek zorunda kalmadan alabilirim bir yolu var mı? Bu cevap büyük ihtimalle de ilk sorunu çözecektir.

CEVAP
26 Ocak 2014, Pazar


EDİT: Burada bile daha kolay bir çözüm, Test ve güzel bir çalışma:

Benim ana denetleyicisi sadece

$scope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
    if (toState.resolve) {
        $scope.showSpinner();
    }
});
$scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
    if (toState.resolve) {
        $scope.hideSpinner();
    }
});

Bu durumu değiştirmek tamamlandığında gidermek için bir şey olan bir devlet gitmek üzereyiz zaman spinner ve gizler gösterir. Bazı devlet hiyerarşisinin check-up (Yani eğer yükleniyor, bir üst devlet bir şey çözerse spinner show) eklemek isteyebilirsiniz ama bu çözüm benim için gayet iyi çalışıyor.

Burada alternatif olarak başvuru için: eski benim önerim

  1. Uygulama denetleyicisi, eğer gidermek sırasında bir değer değişimi (https://github.com/angular-ui/ui-router/wiki/Quick-Reference#wiki-events-1) göstermek istediğiniz yere geçer isen stateChangeStart olay ve onay için dinleyin

    $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
        if (toState.name == 'state.with.resolve') {
            $scope.showSpinner();  //this is a function you created to show the loading animation
        }
    })
    
  2. Sen denetleyicisi sonunda çağrılan, spinner gizleyebilirsiniz

    .controller('StateWithResolveCtrl', function($scope) {
        $scope.hideSpinner();
    })
    

Sen de gidermek sırasında meydana gelmiş olabilecek hataları kontrol etmek için $stateChangeError olay dinleyip hata idare ederken, animasyon gizleyerek isteyebilirsiniz.

Bu denetleyicileri arasındaki spinner mantığı dağıtma gibi değil temiz, ama bir yol var. Umarım yardımcı olur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Exalto_Gamer

    Exalto_Gamer

    15 EKİM 2014
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008
  • merumputdotcom

    merumputdotc

    24 ŞUBAT 2012