首页 > 解决方案 > 当从 HTML 页面而不是 .js 文件调用函数时,AngularJS $scope 未定义

问题描述

我有这个:$scope.products;
我像这样设置它的值:$scope.products = plans;计划是我从电话中得到的结果。如果我调试,在这里,我有$scope并且$scope.products在调试器中。

例子:
https://s3.amazonaws.com/uploads.hipchat.com/39260/829560/KJa2m6bTKcu8qi9/upload.png

但后来我从我的.html

<td>
  <span data-i18n="psngr.billing.pay.overview.total">
    Total
  </span> 
  <label class="bold">
    <span ng-bind-html="prices.currency"></span>
    {{ roundPrice(products[0].price.val)}}
  </label>
  <span id="vat" ng-show="prices.currency_code === 'EUR'"> 
    (+ 
    <span ng-bind-html="prices.currency"></span>
    {{products[0].vat}} 
    <span data-i18n="psngr.billing.vat"></span>
    )
  </span>
</td>

roundPrice基本上从我的文件中调用该方法.js,它执行以下操作:

$scope.roundPrice = function(price) {
  if (!price) {
    return 0;
  }
  // potentially round the price
  if (price % 1 === 0) {
    return price.toFixed(0);
  }
  return price.toFixed(2);
};

但是在这里我的范围是未定义的,也是价格,原因。为什么?

例子:https://s3.amazonaws.com/uploads.hipchat.com/39260/829560/gHUfKdl6SkAUsGT/upload.png

标签: javascripthtmlangularjsscoperootscope

解决方案


在查看了我们从服务器获得的响应后,我更好地理解了问题所在:我得到的价格是一个整数。那么当然 price.val 会被罚款。这意味着它现在可以工作了,在我将代码更改为:

roundPrice(products[0].price)}}

推荐阅读