2016-04-11 15 views
1

AngularJs için nispeten yeniyim ve bir tabController için yeni bir denetleyiciye geçerken hangi sekmenin daha önce tıklandığını hatırlamak için en iyi yolu bulmaya çalışıyorum. Yani durum benim 3 sekmem olurdu. Sekme 3'e tıklıyorum ve daha sonra yeni bir denetleyici ve HTML şablonuna getirmemin içine bir şey tıklıyorum ... Tam olarak ne olduğunu hatırlamak için o denetleyicide oluşturduğum bir "geri" Düğmesine bastığımda en iyi yol nedir? 3 sekmesi.Gezinme Sekmesi numarasını tutama AngularJs

$ rootScope kullanmayı denedim ve sonra her bir denetleyicide sekme numarasını ayarlayarak ve tabcontroller = $ rootScope ... 'u ayarlamaya çalıştım ama bu kaotik ve çok tekrarlayıcıydı ve doğru yol değildi.

Bu, $ windoe.back() ile ilgili değildir; bu, gezinmenin nerede olduğu önemli değil, sekme numarası korunur.

+0

Olası kopya [angular.js içinde history.back() nasıl kullanılır] (http://stackoverflow.com/questions/14070285/how-to-implement-history-back-in-angular-js) –

+0

Sevgili anonim kullanıcı, çözüm yardımımda verilen çözümü yaptı mı? Aradığın şeyi başarmayı başardın mı? – iulian

cevap

1

Bunun için factory kullanabilirsiniz. Açısal olarak, bir fabrika tek bir projedir, yani tüm proje için sadece bir örneği vardır. Böylece, bir denetleyicide bir şey yaparak (ve yaptığınız şeyi kaydederek), değişikliklerinizi başka bir denetleyiciye erişebilirsiniz.

angular.module('awesomeApp') 
    .factory('tabHistoryFactory', function() { 
     var tabHistory = { 
      setPrevTab: function(tab) { tabHistory.prevTab = tab; }, 
      getPrevTab: function() { return tabHistory.prevTab; } 
     }; 
     return tabHistory; 
    }); 

Ardından, ilk denetleyicisi bu fabrikayı enjekte gerekecek ve başka bir sekmeye değiştirmeden önce, sadece tabHistoryFactory.setPrevTab(tab) kullanarak konum sekmesini kaydedin. Ardından, ikinci denetleyicinizde, önceki sekmenize tabHistoryFactory.getPrevTab() kullanarak erişebilirsiniz. Benzer şekilde, sekme geçmişinizin davranışını, bu ikisinin yanında başka işlevler uygulayarak özelleştirebilirsiniz.

İyi şanslar!