如何在ng-repeat中使用变量?

时间:2014-05-29 20:44:39

标签: angularjs

我使用ng-repeat列出了所有产品,我希望打印出明星代码x次,具体取决于product.rating。因此,代码如下所示:

<p class="bs-rating"><i class="fa fa-star" ng-repeat="i in getRating({{ product.rating }}) track by $index"></i></p> 

但是,它将product.rating解析为StringError: [$parse:syntax] http://errors.angularjs.org/1.3.0-beta.8/$parse/syntax?p0=product.rating&p1=is

我试图删除大括号{{ }}

<p class="bs-rating"><i class="fa fa-star" ng-repeat="i in getRating(product.rating) track by $index"></i></p> 

它给了我undefined。我的getRating()声明如下:

$scope.getRating = function(rating){
    return new Array(parseInt(rating));
}

你能帮我弄清楚如何将变量传递给ng标签吗?

1 个答案:

答案 0 :(得分:1)

问题在于getRating函数,即生成数组。 我已在此链接rating using ng-repeat @jsfiddle

上开发了另一种解决方案
<div ng-app="myApp" ng-controller="myCtrl">
<ol>
    <li ng-repeat="product in products">
        {{product.name}} 
        (
        <span style="font-weight:bold" ng-repeat="i in
           getRating(product.rating)">
            x
        </span>
        )
    </li>
</ol>

var myApp = angular.module("myApp", []);
myApp.controller("myCtrl", function($scope){
    $scope.products = [
        {name : "product1", rating:3},
        {name : "product2", rating:5},
        {name : "product3", rating:1}
        ];
    $scope.getRating = function(rating){
        var ratingArray = [];
        for (var i = 1; i <= rating; i++) {
            ratingArray.push(i);
        }
        return ratingArray;
    };
});

希望它会有所帮助。 干杯