2016-04-11 8 views
1

私は比較的新しいAngularJsです。新しいコントローラに切り替えるときにタブが以前にクリックされたことを覚えておくtabControllerの最良の方法を理解しようとしています。だから状況は3つのタブがあるだろう。私はタブ3をクリックして、新しいコントローラとHTMLテンプレートを私に持ってきて、その中の何かをクリックします...私がそのコントローラで作成した "戻る"ボタンを押した場合の最良の方法は、それは3タブです。Navigation AngularJsのタブ数を保持

私は、$ rootScopeを使って、各コントローラでタブ数を設定し、tabcontroller = $ rootScope ...を設定しようとしましたが、それは混乱しすぎて繰り返しすぎて正しい方法ではありませんでした。

これは$ windoe.back()に関するものではありません。これは、ナビゲーションがタブ番号であるかどうかに関わらず方法を思い付くことを意味します。

+0

[angle.jsでhistory.back()を実装する方法](http://stackoverflow.com/questions/14070285/how-to-implement-history-back-in-angular-js) –

+0

の可能な複製親愛なる匿名のユーザーの方は、私の回答で解決策が提供されましたか?あなたは何を探していたのですか? – iulian

答えて

1

これにはfactoryを使用できます。 angleでは、ファクトリはシングルトンです。つまり、プロジェクト全体で1つのインスタンスしか存在しません。したがって、1つのコントローラーで何かを作成して(そして保存したものを保存することによって)、別のコントローラーで変更にアクセスすることができます。

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

次に、あなたの最初のコントローラに、あなたはこの工場を注入する必要がありますし、別のタブに変更する前に、ちょうどあなたがtabHistoryFactory.setPrevTab(tab)を使用しているタブを保存します。次に、2番目のコントローラでは、tabHistoryFactory.getPrevTab()を使用して以前のタブにアクセスできます。同様に、タブ履歴の振る舞いを、これらの2つの他の機能を実装することによってカスタマイズできます。

幸運を祈る!

関連する問題