初学angularjs不久,遇到一个问题,比如我从后台获取的一个状态的值循环出来是1,3,2。但是我要在前端页面用对应的中文显示出来,比如1就要用采集中;2就要用采集中断,3就要用采集完成,思路应该是怎样的,获取有demo可以详解更佳。
初学angularjs不久,遇到一个问题,比如我从后台获取的一个状态的值循环出来是1,3,2。但是我要在前端页面用对应的中文显示出来,比如1就要用采集中;2就要用采集中断,3就要用采集完成,思路应该是怎样的,获取有demo可以详解更佳。
看你的意思可能是有一个列表要显示状态,像下面这样:
-采集中
-采集中断
-采集完成
这样的页面controller中肯定会对应一个状态数组,也就是你说的1,2,3。假定你已经从服务端把数组取回来了,存在一个变量中,$scope.statuses = [1,2,3];
。现在你只要把这个数组渲染到页面上就行了,用ng-repeat指令循环,代码:
<ul>
<li ng-repeat="status in statuses">
{{status==2?'采集中断':(status<2?'采集中':'采集完成')}}
</li>
</ul>
稍微修改了一下,用了楼下@yzllee的写法,简洁多了!
可以分成两部分,一部分是在js中将数据转换好,绑定在所用域上,另一部分是在页面解析转换之后的数据。
JS部分:
var data = [1, 3, 2]; //接口中返回的值
//将数据循环进行转换,并保存成一个新的数组
//然后,将这个数据绑定在$scope作用域上,用于页面渲染
$scope.values = data.map(function(value) {
return format(data[i]);
});
//定义一个函数专门进行数据的转换,方便拓展
function format(type) {
switch(type) {
case 1:
return '采用中';
case 2:
return '采用中断';
case 3:
return '采用完成';
default:
return type;
}
}
HTML部分:
<div ng-repeat='value in values'>
{{ value }}
</div>
.filter('toValue', function(){
return function(val){
switch(val){
case 1:
return "采集中";
case 2:
return "采集中断";
case 3:
return "采集完成";
default:
return "";
}
}
})
<div ng-repeat='item in itemArr'>
{{ item | toValue }}
</div>
switch (value){
case 1:'采集中';
break;
case 2:'采集中断';
break;
case 3:'采集完成';
break;
}
用switch就能解决
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
5 回答832 阅读
3 回答1.7k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答868 阅读✓ 已解决
素不素最简洁 我都不禁要点个赞啦 哈哈