首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular JS -基于其包含的数字的滤波器

Angular JS -基于其包含的数字的滤波器
EN

Stack Overflow用户
提问于 2017-09-08 17:55:54
回答 4查看 740关注 0票数 0

我是angular js的新手。我有这样的数组:

代码语言:javascript
运行
复制
$scope.experience_list = ['6-7','0-1','4-5','2-3','8-10','10+', 'na'];

我是从ajax调用中获得这个数组的。因此数组的值将以任意顺序出现。

我使用ng-repeat来显示这个数组

代码语言:javascript
运行
复制
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="">
<ul ng-init="experience_list = ['6-7','0-1','4-5','2-3','8-10','10+', 'na']">
    <li ng-repeat="experience in experience_list | orderBy:'toString()' track by $index">
  <a href="javascript:void(0)"><i class="fa fa-square-o" aria-hidden="true"></i> <span ng-if="experience == 'na'">Unknown</span> <span ng-if="experience != 'na'">{{experience}} years</span></a>
</li>
</ul>
</div>

它给我的结果是

代码语言:javascript
运行
复制
0-1 years
10+ years
2-3 years
4-5 years
6-7 years
8-10 years
Unknown

但我希望是:

代码语言:javascript
运行
复制
0-1 years    
2-3 years
4-5 years
6-7 years
8-10 years
10+ years
Unknown

任何建议或帮助都将不胜感激。

EN

回答 4

Stack Overflow用户

发布于 2017-09-08 18:01:58

试试这个:

代码语言:javascript
运行
复制
<li ng-repeat="experience in experience_list | orderBy:$index track by $index">
票数 1
EN

Stack Overflow用户

发布于 2017-09-08 20:05:42

如果你想执行任何函数,只需通过在函数中传递$index来调用它。并使用$index从函数中的数组中提取值。

代码语言:javascript
运行
复制
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="">
<ul ng-init="experience_list = ['0-1','2-3','4-5','6-7','8-10','10+', 'na']">
    <li ng-repeat="experience in experience_list">
  <a href="javascript:void(0)"><i class="fa fa-square-o" aria-hidden="true"></i> <span ng-if="experience == 'na'">Unknown</span> <span ng-if="experience != 'na'">{{experience}} years</span></a>
</li>
</ul>
</div>

票数 1
EN

Stack Overflow用户

发布于 2017-09-08 17:59:48

如果你这样做的话

代码语言:javascript
运行
复制
ng-repeat="experience in experience_list track by $index"

你得到了正确的输出

这是另一种方法

代码语言:javascript
运行
复制
var a = ['0-1','2-3','4-5','6-7','8-10','10+', 'na']
$scope.experience_list = a.map(function(obj){
    return{
        order : obj.split('-')[0] || obj,
        real : obj
    };
});

html

代码语言:javascript
运行
复制
<ul>
  <li ng-repeat="experience in experience_list | orderBy:-'order'">
     <a href="javascript:void(0)"><i class="fa fa-square-o" aria-hidden="true"></i> <span ng-if="experience == 'na'">Unknown</span> <span ng-if="experience != 'na'">{{experience.real}} years</span></a>
  </li>
</ul>

只需尝试在删除和推送新值时使用相同的格式

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46113730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档