$ ionicHistory.goBack()与离子选项卡无法正常工作

时间:2017-01-12 05:33:19

标签: ionic-framework

我的页面包含3个标签,如果我从tab3转发到下一页,然后使用$ ionicHistory.goBack()从该页面返回,它会重定向到tab1。如何让它重定向到tab3本身

var c1 = document.getElementsByClassName('class1')[0].childNodes;
var allC1Text = Array.from(c1.values())
  .filter(v => v.nodeName === '#text')
  .map(t => t.textContent)
  .join('')
  .trim();

var c2 = document.getElementsByClassName('class2')[0].childNodes;
var allC2Text = Array.from(c2.values())
  .filter(v => v.nodeName === '#text')
  .map(t => t.textContent)
  .join('')
  .trim();

console.log('Class1 Text:', allC1Text);
console.log('Class2 Text:', allC2Text);

1 个答案:

答案 0 :(得分:0)

我不确定是否可以通过$ state来做到这一点。我在12月(2016年)第一次回顾时自己是Ionic的新手。但是,我碰巧有这个确切的情况。这就是我解决它的方法。

就我而言,我没有使用标签。相反,根据“标签号”,我有三个不同的DIV可见。初始化视图时,我将其设置为“1”并使用该属性来控制执行的代码。

我猜你正在使用的控件有一个属性来识别和设置你需要的特定标签,因为这是更改标签点击标签的最可能方式。考虑将该属性“tab#”的值放入控制器使用的适当服务中。这是我通过Factory定义的一项服务中的实际代码的精简版本。

YourService.js:

    // controllers are instances.  When navigating away, state is lost. This
    // tracks the tab we wish to view when we load the home page.
    var activeHomePageTab = 1;

    var service = {
        getActiveTab: getActiveTab,
        setActiveTab: setActiveTab,
        ...
     };

    return service;

    ////////////////

    function getActiveTab() { return activeHomePageTab; }
    function setActiveTab(num) { activeHomePageTab = num; }
    ...

这里,功能是私人的。在控制器中,设置选项卡时,还要设置此属性。作为单例,只要您的应用程序正在运行,这将保持有效。

接下来,在init()例程中,当加载控制器时,检查此属性并设置选项卡是否已定义:

function init() {
    var tab = YourService.getActiveTab();
    if (tab !== undefined) {
        setTab(tab);
    } else {
        setTab(1)
    }
    ...
}

当然,还有其他方法 - 可能在Constant对象上使用Value或属性。