所以我对AngularJs相对较新,我试图找出tabController最好的方法来记住切换到新控制器时之前点击的标签。所以情况是我有3个标签。我单击选项卡3,然后单击其中的某些内容,将我带到一个新的控制器和HTML模板...如果我点击"返回"那么最好的方法是什么?我在该控制器中创建的按钮,以准确记住它作为3选项卡的状态。
我尝试使用$ rootScope,然后在每个控制器中设置选项卡号并设置tabcontroller = $ rootScope ...但这是混乱且过于重复,而且不是正确的方法。
这不是关于$ windoe.back(),这是指提出一种方式,无论导航在哪里,标签号都被保留。
答案 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()
访问之前的标签页。同样,您可以通过实现其他功能来自定义选项卡历史记录的行为。