Angular为同一个调用提供不同的结果

时间:2015-02-26 08:53:06

标签: javascript angularjs ionic

我正在使用角度与离子,它的行为非常奇怪。

var loco =  UserService.doesOrderExist();
  if (UserService.doesOrderExist()) {
    if(UserService.orderSize() > 0){
      return 'ion-bag';
    }else{
      return '';
    }
  } else if (CartService.numItems() > 0) {
    return 'ion-ios7-cart';
  }

Angular多次调用这段代码。并返回“离子袋”。 然后它突然进入了其他情况(在同一次执行期间)。

doesOrderExist: function() {
      return (me && me.current_order);
},
orderSize: function() {
      return me.current_order.length;
},

当我进入orderSize时,“我”在一定数量的呼叫后变为未定义。 我尝试了另一种方法:

var loco =  UserService.doesOrderExist();
  if (loco || loco.length > 0) {
    return 'ion-bag';
  } else if (CartService.numItems() > 0) {
    return 'ion-ios7-cart';
  }

但是,尽管每次都没有改变结果,但可能是因为错误:

  

错误:interr插值错误无法插值:按钮   button-ic ...()}} TypeError:无法读取null的属性'length'。

我只是不确定会发生什么,因为如果我只调用doOrderExist,那么我总是定义“me”,如果我分开进行单独的评估,那么在经过Angular / Ionic调用的几个循环后,“me”就会变得不确定。 任何提示或指示都将非常感激。

1 个答案:

答案 0 :(得分:0)

这个问题的问题是js是动态类型的,我接管的代码有时将current_order视为布尔值,有时将其视为数组。