我有一辆车。现在我想使用以下内容显示购物车的总数:
$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"> {{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);
}
答案 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
。