2015-04-04 31 views
5

Bir sayfaya ilk isabetle, tamamen işlenmiş bir sayfayı kullanıcıya geri göndermek istiyorum. Javascript devre dışı bırakılırsa bu iyi çalışır, ancak javascript etkinleştirilirse, açısal-ui yönlendirici durumu arar ve varolan içeriğin üstünde ui-view haline getirir. İlk sayfa yüklemesinde bunu bir şekilde devre dışı bırakmanın bir yolu var mı?Köşeli ui yönlendiriciyi ilk sayfa yüklemesinde yeniden yükleme yapmaktan koruyun

Bu soruna bakın: $ urlRouterProvider.deferIntercept() işlevini kullanmanızı öneren https://github.com/angular-ui/ui-router/issues/1807, ancak bu sayfanın kullanımıyla ilgili çok fazla belge bulamıyorum ve ilk sayfa yüklemesinin nasıl engelleneceğinden emin değilim.

+0

Bu sayfada verilen bağlantıyı kontrol edin: https://angular-ui.github.io/ui-router/site/#/api/ui.router.router.$urlRouterProvider#methods_deferintercept. Hatta bir örnek sağlar. Uygulamanızın yapılandırmasını önyüklerken bu yöntemi çağırdığınızdan emin olun. – Dom

+0

Bu garip, Chrome'da boş bir sayfa görüyorum (http://share.aidanlister.com/aYJx) bu yüzden kafam çok karışıktı. – Aidan

+0

Sunucu tarafı oluşturmayı nasıl işlersiniz? –

cevap

6

İki bölüm var: İlk önce yönlendiriciyi ilk sayfa yüklemesinde tekmelenmesini devre dışı bırakmanız gerekiyor. Bu yüzden gibi yapılabilir: (bkz ui-view iç sunucu render işaretlemeyi Damping iki kez çalıştırılan birinci denetleyici ile ilgili sorunlar garip davranışa neden:

app.config(function($httpProvider, $urlRouterProvider) { 
    // On the first page load disable ui-router so that 
    // our server rendered page is not reloaded based on the window location. 
    $urlRouterProvider.deferIntercept(); 
}); 

İkincisi biz doğru ui-görünümü kurmak gerekir https://github.com/angular-ui/ui-router/issues/1807), böylece bizim ui-view div sonra bizim sunucu render işaretleme eklemek ve bir navigasyon olayı olana kadar ui-view gizlemek. yani şimdi biz ettik, biz JavaScript devre dışı bırakılırsa sayfa mükemmel davranır emin olmak için ng-pelerin kullandım

app.controller('PropertyDetailCtrl', function loader($rootScope, $scope) { 
    $scope.isFirstPageLoad = true; 

    $rootScope.$on('$viewContentLoading', function(event, viewConfig) { 
    $scope.isFirstPageLoad = false; 
    }); 
}); 

:

<div ng-controller="PropertyDetailCtrl"> 
    <div class="ng-cloak" ng-show="!isFirstPageLoad" ui-view></div> 

    <div ng-show="isFirstPageLoad"> 
    (server rendered markup goes here) 
    </div> 
</div> 

Şimdi $ kapsamında isFirstPageLoad ayarlamanız gerekir ui yönlendiricisi tarafından işlenen tüm sonraki gezinti ile ilk sayfa yükü oluşturulmuş tam sunucu tarafı var.

+0

Tarihte ileri ve geri gitmeyi nasıl başaracağınızı anladınız mı? Farklı durumlara göz atarsam ve ardından isFirstPageLoad = true ile sayfaya geri dönmek için geri düğmesini kullanırsam, statik içerik hala var, ancak dinamik durum da yüklenir. –

+1

Dürüst olmak gerekirse, Açısaldan Tepkimeye değiştim ve bu her şeyi düzeltti ... – Aidan

İlgili konular