[英]Angularjs function called in an expression inside ng-repeat is not being called?
我是angularJS的新手,我正在尝试一个示例来介绍基本概念。 这是一个simpel购物车示例。我试图在评分表达式中调用一个函数,该函数返回所有已提交评分的平均值。但是未调用该函数。 那么为什么不调用该函数?又是实现这种功能的正确方法呢?
<div ng-controller="productsController"> <table class="table table-bordered"> <thead> <tr> <th>ProductName</th> <th>Price</th> <th>Buy</th> <th>Total Sold</th> <th>Rating</th> </tr> </thead> <tbody> <tr ng-repeat="product in products"> <td>{{product.name}}</td> <td>{{product.price | currency}}</td> <td><input type="button" class="btn btn-success" value="Buy"/></td> <td>{{product.totalSold}}</td> <td>{{product.getRating(product)}}</td> </tr> </tbody> </table> </div>
这是js部分
(function(){ var productsModule=angular.module("productsModule",[]); productsModule.controller("productsController",["$scope",function($scope){ $scope.products=productsObj; $scope.getRating=function(){ var _rating=0; for(var i=0;i<product.ratings.length;i++) _rating+=product.ratings[i]; return _rating || "Not Rated"; }; }]); /* products object*/ var productsObj=[ { name:"Santoor", price:12, isAvilable:true, images:[], ratings:[2.5,3,3.5,3.8], totalSold:0 } ] }());
您正在以不正确的方式调用控制器功能。 它应该是
<td>{{getRating(product)}}</td>
代替
<td>{{product.getRating(product)}}</td>
另外,您正在将参数传递给控制器功能,而未在函数中声明参数。 你的功能应该喜欢
$scope.getRating=function(product){
var _rating=0;
for(var i=0;i<product.ratings.length;i++)
_rating+=product.ratings[i];
return _rating || "Not Rated";
};
你必须使用
for(var i=0;i<$scope.products.ratings.length;i++)
_rating+=$scope.products.ratings[i];
因为product是作用域变量。
也
{{product.getRating(product)}}
至
{{getRating(product)}}
更改
{{product.getRating(product)}}
至
{{getRating(product)}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.