角度返回变量和显示错误

时间:2014-09-11 18:42:02

标签: angularjs angularjs-scope

我有一辆车。现在我想使用以下内容显示购物车的总数:

$scope.cartSum = function () {
  tot = parseInt($rootScope.cartTotal)+parseInt($scope.resData.restaurant_delivery_charge);
  return tot.toFixed(2);
};

HTML:

<div style="float:right;width:20%;text-align:right">
  <span class="pull-left">€ </span>
  <span class="pull-right">&nbsp; {{cartSum()}}
</div>

它有效,它显示了一笔金额。但由于某种原因,我的控制台显示以下错误:

Error: [$interpolate:interr] http://errors.angularjs.org/undefined/$interpolate/interr?p0=%C2%A0%20%7B%7…20Cannot%20read%20property%20'restaurant_delivery_charge'%20of%20undefined
    at Error (native)
    at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:6:453
    at Object.n (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:71:362)
    at g.$digest (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:96:240)
    at g.$apply (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:99:100)
    at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:108:229
    at e (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:33:182)
    at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:36:388 angular.js:8296
2Error: [$interpolate:interr] http://errors.angularjs.org/undefined/$interpolate/interr?p0=%C2%A0%20%7B%7…20Cannot%20read%20property%20'restaurant_delivery_charge'%20of%20undefined
    at Error (native)
    at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:6:453
    at Object.n (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:71:362)
    at g.$digest (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:96:240)
    at g.$apply (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:99:100)
    at k (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:65:98)
    at C (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:68:486)
    at XMLHttpRequest.t.onreadystatechange (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:69:466) 

//编辑:包装它只在res.data没有取消定义时运行......现在没有错误

  if (!angular.isUndefined($scope.resData)) {
    tot1 = parseFloat($rootScope.cartTotal);
    tot2 = parseFloat($scope.resData.restaurant_delivery_charge);
    t = tot1+tot2;
    return t.toFixed(2);

}

2 个答案:

答案 0 :(得分:2)

欧文是对的,试试这个:

$scope.cartSum = function () {
  if($scope.resData===undefined || $scope.resData.restaurant_delivery_charge===undefined ||  $rootScope.cartTotal===undefined) return "";
  tot = parseInt($rootScope.cartTotal)+parseInt($scope.resData.restaurant_delivery_charge);
  return tot.toFixed(2);
};

你会发现你在控制台中没有收到错误。

它发生的是第一次角度尝试渲染您在cartSum函数中使用的某些属性时未定义。

答案 1 :(得分:1)

您的错误是说它无法读取属性restaurant_delivery_charge,因为$scope.resData未定义。在尝试为其分配属性之前,请确保已定义对象$scope.resData