所以我有一个json,我试图只为活跃用户获取所有统计数据。当我尝试做一个像这样的for循环时
for(var i=0; i < user.User.Stats.data.length; $i++;){
return user.User.Stats[i].active === "1";
}
它不起作用......但是只要我只获得一条记录
,就可以在没有for循环的情况下正常工作return user.User.Stats[i].active === "1";
这是我的HTML
<div ng-controller="MyCtrl">
<div ng-repeat="user in _users | filter:isActive">
{{user.User.userid}}
</div>
</div>
这是我的js
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.isActive = function(user) {
// for(var i=0; i < user.User.Stats.data.length; $i++;){
return user.User.Stats[0].active === "1";
// }
};
$scope._users = [
{
"User": {
"userid": "19571",
"status": "7",
"active": "1",
"lastlogin": "1339759025307",
"Stats": [
{
"active": "1",
"catid": "10918",
"typeid": "71",
"Credits": [
{
"content": "917,65",
"active": "1",
"type": "C7"},
{
"content": "125,65",
"active": "1",
"type": "B2"}
]},
{
"active": "1",
"catid": "10918",
"typeid": "71",
"Credits": [
{
"content": "917,65",
"active": "1",
"type": "C7"},
{
"content": "125,65",
"active": "1",
"type": "B2"}
]}
]
}}];
}
答案 0 :(得分:12)
没有什么复杂的,只是你的语法错误。
for循环需要像这样写:
for(var i=0; i < user.User.Stats.length; i++)
即。没有多余的$
,没有多余的;
,data
内也没有Stats
。
请参阅http://jsfiddle.net/4kzzy/176/
另请注意,您可以使用angular.forEach
代替。
答案 1 :(得分:8)
我不确定它是否适合您的问题,但如果您只想显示活跃用户,请尝试以下设计:
<div ng-controller="MyCtrl">
<div ng-repeat="user in _users | filter:{User.active:1}">
{{user.User.userid}}
</div>
</div>
显示: 19571
答案 2 :(得分:2)
嗯,很明显它不会起作用,因为data
路径中没有名为user.User.Stats
的变量。似乎缺少部分业务逻辑。什么时候应该过滤掉用户?如果他们没有Stats
,或Stats
数组中的所有单元格都有active === 1
的记录?
要查看Stats
数组中的所有单元格,正确的语法是:
for(var i=0; i < user.User.Stats.length; $i++;){
var singleCell = user.User.Stats[i];
// singleCell.active === "1";
}