条件导航页面

时间:2017-10-23 17:40:32

标签: angular ionic2

我必须根据条件导航页面,这里我从后端得到响应,当我尝试评估它时,它表现为连续循环但没有得到确切的结果。我到现在所做的是:

constructor (public homeauth: Authservice, public navCtrl: NavController) {
  this.accesscheck();
}

accesscheck() {
  this.homeauth.accesscheck().then(response => {
    for (var i = 0; i < response.length; i++) {
      if (response[i]["c20"] !== true) {
        this.navCtrl.setRoot("TabsPage");
      }
    }
  });
}

我的后端有这样的回复:

[
    {
        "c24": true,
        "statuscode": 65544
    },
    {
        "c23": true,
        "statuscode": 4259848
    },
    {
        "c22": true,
        "statuscode": 6357000
    },
    {
        "c21": true,
        "statuscode": 7405576
    },
    {
        "c20": true,
        "statuscode": 7929864
    },
    {
        "c19": true,
        "statuscode": 8192008
    },
    {
        "c18": true,
        "statuscode": 8323080
    }
]

我的后端代码是这样的 enter image description here

3 个答案:

答案 0 :(得分:1)

我认为问题在于你在一个甚至可能没有&#34; c20&#34;的对象中检查响应[i] [&#34; c20&#34;]!== true。属性。因此,您应首先检查响应[i]对象是否具有该属性。

此外,在您导航到所需的页面后,您应该break;你的for循环:

accesscheck() {
  this.homeauth.accesscheck().then(response => {
    for (var i = 0; i < response.length; i++) {
      if (response[i]["c20"] !== null) {
          if (response[i]["c20"] !== true) {
            this.navCtrl.setRoot("TabsPage");
            break;
          }
      }
    }
  });
}

答案 1 :(得分:0)

你循环次数太多了。如果你有多个&#34;假&#34;在您的数据中声明,您将最终导航到tabspage不止一次。在遇到第一个false之后你应该中断,或者你应该设置一个类似&#34; navigatedToTabsPage&#34;的布尔值。最初设置为false,但在 if 语句中求值为true,从而终止循环(如果是,则必须嵌套另一个if语句)

答案 2 :(得分:0)

它的工作方式是这样的

findObjectByKey(array, key, value) {
  for (var i = 0; i < array.length; i++) {
      if (array[i][key] === value) {
          return array[i];
      }
  }
  return null;
}

   accesscheck() {
    this.homeauth.accesscheck().then(response => {
      this.obj = this.findObjectByKey(response, 'c77', true);
      if(this.obj){
        console.log("success")
      }else{
        this.navCtrl.setRoot("TabsPage");
      }
    });
  } 

我在构造函数中传递了此accesscheck()。