AngularJS函数在页面呈现后持续调用

时间:2017-06-25 18:42:06

标签: javascript angularjs stack-trace

我有一个ng-repeat,循环遍历一个promise返回的元素。发生了两件奇怪的事情。 1.虽然我可以看到承诺返回单个元素,但我看到一个元素呈现给HTML但在控制台中我看到4条消息暗示该函数被调用了4次。 2)每隔30秒左右看起来ng-repeat再次初始化,因为我看到相同的console.log消息每30秒出现4次。

      <ion-item cache-view="true" class="item-avatar item-icon-right" style="min-height:60px;" ng-repeat="crR in currentR" type="item-text-wrap" href="#/tab/rLater/{{crR.bid}}">
        <div>
          <img id="crR_IconImage" style='margin:0px 8px 0px 0px;float:left;max-width:40px;height:auto;' ng-src="{{crR.fullLogo}}">
          <h3>{{crR.pDate}} @ {{crR.pTime}} (${{crR.quoted}})</h3>
          <p style="padding-top:5px;font-size:12px;">{{crR.vName}}, Status:
            <span>{{getConfName(crR.confirmed)}}</span>
          <i id="customIcon" class="icon ion-chevron-right icon-accessory"></i>
        </div>
      </ion-item>

在我的应用HTML视图中,我确实看到列出了1个项目...但是,{{getConfName(crR.confirmed)}}是一个定义为的函数:

  $scope.getConfName = function(value) {
    console.log("caller is " + arguments.callee.toString());
    console.log("value: " +value) ;  // <-- this prints 4 times every 30 seconds
    if (value == 0) {
      return "Not Confirmed" ;
    } else if (value == 1) {
      return "Confirmed" ;
    } else if (value == 2) {
      return "Cancelled by Vendor" ;
    } else if (value == 3) {
      return "Cancelled by user" ;
    } else if (value == 4) {
      return "Modified by Vendor" ;
    } else if (value == 5) {
      return "Modified by User" ;
    }
  }

在console.log中,我看到value = 0打印了四次......然后每30秒,value再打印四次。我尝试添加:

console.log("caller is " + arguments.callee.caller.toString());

但是caller的错误未定义。如果我这样做:

console.log("caller is " + arguments.callee.toString());

我看到上面的功能打印到控制台上:

caller is function (value) {
    console.log("caller is " + arguments.callee.toString());
    console.log("value: " +value) ;
    if (value == 0) {
      return "Not Confirmed" ;
    } else if (value == 1) {
      return "Confirmed" ;
    } else if (value == 2) {
      return "Cancelled by Vendor" ;
    } else if (value == 3) {
      return "Cancelled by user" ;
    } else if (value == 4) {
      return "Modified by Vendor" ;
    } else if (value == 5) {
      return "Modified by User" ;
    }
  }

我不能为我的生活弄清楚为什么value = 0每隔30秒不断地打印到控制台......每次都会打印它,它会打印四次。另一件我不认为应该与之相关的事情是,我每隔30秒就会在该应用屏幕上打印我的AdMob广告......当广告更改console.log value消息时。它与上述功能类似,是在投放新广告时触发的一些功能。这对我没有意义。

0 个答案:

没有答案