Угловая итерация по JSON
Итак, у меня есть JSON, и я пытаюсь получить всю статистику только для активных пользователей. когда я пытаюсь сделать в цикле что-то вроде этого
for(var i=0; i < user.User.Stats.data.length; $i++;){
return user.User.Stats[i].active === "1";
}
это не работает... однако прекрасно работает без цикла, пока я получаю только одну запись
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"}
]}
]
}}];
}
вот демо-ссылка http://jsfiddle.net/4kzzy/174/
3 ответа
Ничего сложного, просто ваш синтаксис неправильный.
Цикл for должен быть записан так:
for(var i=0; i < user.User.Stats.length; i++)
Т.е. без лишнего $
без лишнего ;
, а также нет data
внутри Stats
,
Смотрите http://jsfiddle.net/4kzzy/176/
Также обратите внимание, что вы можете использовать angular.forEach
вместо.
Я не уверен, подходит ли это решение для вашей проблемы, но если вы хотите отображать только активных пользователей, попробуйте этот дизайн:
<div ng-controller="MyCtrl">
<div ng-repeat="user in _users | filter:{User.active:1}">
{{user.User.userid}}
</div>
</div>
Шоу: 19571
Ну, вполне очевидно, что это не сработает, так как нет переменной с именем 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";
}