使用AngularJs根据条件/数字在td中添加跨度图标/字形图标/图形

Posted

技术标签:

【中文标题】使用AngularJs根据条件/数字在td中添加跨度图标/字形图标/图形【英文标题】:Adding Span icons/glyphicon/graph in td based on condition/number using AngularJs 【发布时间】:2016-04-13 03:14:31 【问题描述】:

我正在尝试在国家/地区之前使用 td 中的角度添加跨度图标/字形图标,我已使用以下代码来执行此操作,但我需要动态地做更好的方式。 需要你的帮助。

    $scope.countries = [
        name: 'Australia', rating: 0, other: "lorem ipsum",
        name: 'India', rating: 1, other: "lorem ipsum",
        name: 'Canada', rating: 3, other: "lorem ipsum",
        name: 'Mexico', rating: 2, other: "lorem ipsum",
        name: 'UK', rating: 4, other: "lorem ipsum",
        name: 'Germany',rating: 2, other: "lorem ipsum",
        name: 'USA',rating: 1, other: "lorem ipsum"
    ];

<tr ng-repeat="country in countries">
    <td>
        <span ng-if="country.rating == 1">
                <span class="glyphicon glyphicon-star"></span>
         </span>
        <span ng-if="country.rating == 2">
                <span class="glyphicon glyphicon-star"></span>
                <span class="glyphicon glyphicon-star"></span>
         </span>
        <span ng-if="country.rating == 3">
            <span class="glyphicon glyphicon-star"></span>
            <span class="glyphicon glyphicon-star"></span>
            <span class="glyphicon glyphicon-star"></span>
      </span>
        <span ng-if="country.rating == 4">
        <span class="glyphicon glyphicon-star"></span>
            <span class="glyphicon glyphicon-star"></span>
            <span class="glyphicon glyphicon-star"></span>
            <span class="glyphicon glyphicon-star"></span>
            <span class="glyphicon glyphicon-star"></span>
      </span>
        <span>
             country.name
        </span>
    </td>
    <td>country.other</td>
</tr>

【问题讨论】:

看看这个问题,你可以做类似的事情:***.com/questions/16824853/… 【参考方案1】:

您可以使用第二个 ng-repeat:

<span ng-repeat="idx in country.rating track by $index" class="glyphicon glyphicon-star"</span>

【讨论】:

country.rating 是一个数字而不是一个数组。 ng-repeat 适用于数字? ***.com/questions/16824853/… 当 country.rating 是一个数字而不是一个集合时,这是否有效?【参考方案2】:

创建一个函数来获取一个星号数组 然后在 ng-repeat 上使用它

$scope.getArrayNumber = function(num) 
   return new Array(num);   
;


<tr ng-repeat="country in countries">
   <td>
      <span ng-repeat="star in getArrayNumber(country.rating) track by $index">
          <span class="glyphicon glyphicon-star"></span>
      </span>
      <span>
          country.name
      </span>
   </td>
</tr>

【讨论】:

古贺。我只有印度和美国的明星,其他国家没有图标 在 ng-repeat 上通过 $index 添加音轨【参考方案3】:

这是一个更简单的解决方案。创建一些生成星星的 CSS :

.star 
    color: orange;

.star1:before 
    content : '★'

.star2:before 
    content : '★★'

...等等。然后使用ng-class 函数根据评分设置正确的星级:

<tr ng-repeat="country in countries">
    <td>
        <span ng-class="stars(country.rating)"></span>
        <span>
             country.name
        </span>
    </td> 
    <td>country.other</td>
</tr>
</table>
$scope.stars = function(rating) 
   return 'star star'+rating;

工作演示 -> http://plnkr.co/edit/h3JsormYIZ6th3Kvblh5?p=preview

【讨论】:

【参考方案4】:

根据@koga 提供的答案,另一种方法不使用track by

$scope.getArrayNumber = function(num) 
    var array = [];
    for (var i = null; i < num; i++) 
        array.push(i);
    ;
   return array;   
;

<tr ng-repeat="country in countries">
   <td>
      <span ng-repeat="star in getArrayNumber(country.rating)">
          <span class="glyphicon glyphicon-star"></span>
      </span>
      <span>
          country.name
      </span>
   </td>
</tr>

【讨论】:

以上是关于使用AngularJs根据条件/数字在td中添加跨度图标/字形图标/图形的主要内容,如果未能解决你的问题,请参考以下文章

angularjs简单条件[重复]

使用jquery在表格行中添加数字[重复]

angularjs 判断字符串是不是是数字格式

根据条件添加类(对于使用 v-for 的最后呈现的元素)

不允许使用 CORS 使用 angularjs 进行跨域请求的 DELETE 请求

是否可以使用 AngularJS $formatters 添加额外的零? (或以任何可能的方式,输入数字?)