繁体   English   中英

在ng-repeat内部的表达式中调用的Angularjs函数没有被调用吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM