2013-09-22 15 views
9

kurduğum aşağıdaki adres:Yalnızca ui yönlendiricili üst durumu görüntülediğimde otomatik olarak son seçilen alt duruma gidebilir miyim?

var admin = { 
     name: 'admin', 
     url: '/admin', 
     views: { 
      'menu': { 
       templateUrl: '/Content/app/admin/partials/menu.html', 
      }, 
      'content': { 
       templateUrl: function (stateParams) { 
        var content = localStorage.getItem('ls.adminPage'); 
        if (content != null && content != "") { 
         return '/Content/app/admin/partials/' + content + '.html'; 
        } else { 
         return '/Content/app/common/partials/empty.html'; 
        } 
       } 
      } 
     } 
    }; 

    var adminContent = { 
     name: 'admin.content', 
     parent: 'admin', 
     url: '/:content', 
     views: { 
      '[email protected]': { 
       templateUrl: function (stateParams) { 
        localStorage.setItem('ls.adminPage', stateParams.content); 
        return '/Content/app/admin/partials/' + stateParams.content + '.html'; 
       }, 
      } 
     } 
    } 

ne olur bir kullanıcıya daha önce o /admin/xxx sayfaya olmuştur zaman bir dahaki sefere /admin tekrar /admin/xxx sayfasını dönecektir seçilmiş olmasıdır. Ancak, tarayıcı URL'si /admin olarak gösterildikçe ve durum doğru şekilde ayarlanmadığından, bu durum bir karmaşadır.

Bir alt durumu saklayabilmenin bir yolu var mı, sonra da kullanıcı ebeveyne en son bilinen alt duruma geçecek ve bu URL göstergesini tarayıcıda gösterecek şekilde gezinir mi?

+0

ui-router için onEnter işlevlerine baktınız mı? Sadece merak ettiniz ki, son vistedmis yönetici çocuk devleti adını, siz şablonunu yaptığınız gibi yerel depolamaya kaydedebilirsiniz, ve eğer bir tane $ state.go ('son-çocuk-devlet') var ise? –

cevap

4

yapın:

myapp.config(function($urlRouterProvider){ 

    $urlRouterProvider.when('/admin', function() { 
    var content = localStorage.getItem('ls.adminpage'); 
    if (content != null && content != "") { 
     return "/admin/" + content; 
    } 
    else { 
     return false; 
    } 
    }); 

}); 

bu plunkr bakınız: http://plnkr.co/edit/oEXZpO

Düzenleme: Ben biraz kısa olduğunu fark iki ay sonra bu cevabı Alptekin'in açıklama üzerine (az söylemek): Yani bu URL’de görünmesi için isteği son seçilen yönetici sayfasına "yönlendirir". Plunkr'ı güncelledim ve mevcut belge URL'sini göstermek için bir işlev ekledim. Bu yüzden/admin/URL’yi tıkladıktan sonra URL’nin/admin/12345’in daha önce ziyaret edilmiş olması gerekiyordu.