在Navigation AngularJs

时间:2016-04-11 17:54:41

标签: angularjs

所以我对AngularJs相对较新,我试图找出tabController最好的方法来记住切换到新控制器时之前点击的标签。所以情况是我有3个标签。我单击选项卡3,然后单击其中的某些内容,将我带到一个新的控制器和HTML模板...如果我点击"返回"那么最好的方法是什么?我在该控制器中创建的按钮,以准确记住它作为3选项卡的状态。

我尝试使用$ rootScope,然后在每个控制器中设置选项卡号并设置tabcontroller = $ rootScope ...但这是混乱且过于重复,而且不是正确的方法。

这不是关于$ windoe.back(),这是指提出一种方式,无论导航在哪里,标签号都被保留。

1 个答案:

答案 0 :(得分:1)

您可以使用factory。在角度中,工厂是单件,意味着整个项目只存在一个实例。因此,通过在一个控制器中创建一些东西(并保存您已做过的事情),您可以在另一个控制器中访问您的更改。

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

然后,在您的第一个控制器中,您必须注入此工厂,然后在切换到另一个标签之前,只需使用tabHistoryFactory.setPrevTab(tab)保存您正在使用的标签即可。然后,在第二个控制器中,您可以使用tabHistoryFactory.getPrevTab()访问之前的标签页。同样,您可以通过实现其他功能来自定义选项卡历史记录的行为。

祝你好运!