Javascript 在某些条件下使用ng repeat显示JSON

Javascript 在某些条件下使用ng repeat显示JSON,javascript,angularjs,json,Javascript,Angularjs,Json,我用$http()获取了这个JSON文件。是这样的: [{ "sno": "4", "eventname": "cricket", "event-type": "sports", "A-team": "mme", "B-team": "eee", "Gender": "male", "time": "2017-11-24 00:00:00", "isresult": "1", "result": "[{\"a\":\"121

我用
$http()
获取了这个JSON文件。是这样的:

[{
    "sno": "4",
    "eventname": "cricket",
    "event-type": "sports",
    "A-team": "mme",
    "B-team": "eee",
    "Gender": "male",
    "time": "2017-11-24 00:00:00",
    "isresult": "1",
    "result": "[{\"a\":\"121/5\",\"b\":\"122/4\"}]",
    "match-type": "semi",
    "venue": "downs"
},
{
    "sno": "2",
    "eventname": "cricket",
    "event-type": "sports",
    "A-team": "cse",
    "B-team": "mme",
    "Gender": "female",
    "time": "2017-11-17 00:00:00",
    "isresult": "0",
    "result": "winner team-a",
    "match-type": "league",
    "venue": "tsg"
}]
<th ng-if="item.isresult === 1 && item[event-type] === 'sports'">
   <div ng-repeat="i in item.result">
      {{i.a}}<br>{{i.b}}
   </div>
</th>
我需要使用
ng repeat
来显示它,但仅当它的属性(布尔值)
isresult
0
时才显示
{{item.result}}
。如果
isresult==1
事件类型=='sports'
,我有一个数组,我需要
ng repeat

我是这样做的:

[{
    "sno": "4",
    "eventname": "cricket",
    "event-type": "sports",
    "A-team": "mme",
    "B-team": "eee",
    "Gender": "male",
    "time": "2017-11-24 00:00:00",
    "isresult": "1",
    "result": "[{\"a\":\"121/5\",\"b\":\"122/4\"}]",
    "match-type": "semi",
    "venue": "downs"
},
{
    "sno": "2",
    "eventname": "cricket",
    "event-type": "sports",
    "A-team": "cse",
    "B-team": "mme",
    "Gender": "female",
    "time": "2017-11-17 00:00:00",
    "isresult": "0",
    "result": "winner team-a",
    "match-type": "league",
    "venue": "tsg"
}]
<th ng-if="item.isresult === 1 && item[event-type] === 'sports'">
   <div ng-repeat="i in item.result">
      {{i.a}}<br>{{i.b}}
   </div>
</th>

{{i.a}}
{{i.b}
此外,如果
事件类型==='athletics'
,我将在一个数组中获得
结果,该数组看起来像
[{1:“Xjdjd”},{2:“Jxjxj”},{3:“Dhdj”}]


我该怎么做呢?

如果我正确理解您的问题,您可以尝试以下方法:

<th>
   <div ng-if="item.isresult=='0'">{{item.result}}</div>
   <div ng-if="item.isresult=='1' && item[event-type]=='sports'" ng-repeat="i in item.result">
      {{i.a}}<br>{{i.b}}
   </div>
</th>

{{item.result}
{{i.a}}
{{i.b}

请记住,您在JSON对象中的
结果
假设仅为数组,它看起来像
项的字符串。因此,请选中此项或将其解析为数组

如果我正确理解您的问题,您可以尝试以下方法:

<th>
   <div ng-if="item.isresult=='0'">{{item.result}}</div>
   <div ng-if="item.isresult=='1' && item[event-type]=='sports'" ng-repeat="i in item.result">
      {{i.a}}<br>{{i.b}}
   </div>
</th>

{{item.result}
{{i.a}}
{{i.b}
请记住,您在JSON对象中的
结果
假设仅为数组,它看起来像
项的字符串。因此,请选中此项或将其解析为数组

angular.module('app',[]).controller('ctrl',function($scope){
$scope.data=[{
“事件类型”:“体育”,
“isresult”:“1”,
“结果”:[{
“a”:“121/5”,
“b”:“122/4”
}],
},
{
“事件类型”:“体育”,
“isresult”:“0”,
“结果”:“优胜者a队”,
},
{
“项目类型”:“田径”,
“isresult”:“1”,
“结果”:[{
“1”:“Xjdjd”
}, {
“2”:“Jxjxj”
}, {
“3”:“Dhdj”
}],
}
]
})

{{i.a}}
{{i.b} {{item.result} {{key}}:{{value}
angular.module('app',[]).controller('ctrl',function($scope){
$scope.data=[{
“事件类型”:“体育”,
“isresult”:“1”,
“结果”:[{
“a”:“121/5”,
“b”:“122/4”
}],
},
{
“事件类型”:“体育”,
“isresult”:“0”,
“结果”:“优胜者a队”,
},
{
“项目类型”:“田径”,
“isresult”:“1”,
“结果”:[{
“1”:“Xjdjd”
}, {
“2”:“Jxjxj”
}, {
“3”:“Dhdj”
}],
}
]
})

{{i.a}}
{{i.b} {{item.result} {{key}}:{{value}

这与其他人的答案相去甚远

我做了一个函数,可以对这些值进行排序

下面是对项目值进行排序的函数

$scope.sortIsResult = function(item){
    var result = '';
    if(item.isresult==='0'){
        result = item.result;
    } else if (item.isresult==='1') {
        if(item['event-type'].trim()==='sports'){
            result = 'a:' + JSON.parse(item.result)[0]['a'] + '\n' 
                    + 'b:' + JSON.parse(item.result)[0]['b'];
        } else if(item['event-type'].trim()==='athletics'){
            result = '1:' + JSON.parse(item.result)[0]['1'] + '\n' 
                    + '2:' + JSON.parse(item.result)[1]['2'] + '\n'
                    + '3:' + JSON.parse(item.result)[2]['3'];
        }
    }
    return result;
};
也许这看起来有些头晕,但我认为使用“ng if”有局限性

所以我喜欢使用函数

我希望这能对您有所帮助。:)

很遗憾,此函数的“\n”无效


也许你需要其他方法来断线。

这与其他人的答案相去甚远

我做了一个函数,可以对这些值进行排序

下面是对项目值进行排序的函数

$scope.sortIsResult = function(item){
    var result = '';
    if(item.isresult==='0'){
        result = item.result;
    } else if (item.isresult==='1') {
        if(item['event-type'].trim()==='sports'){
            result = 'a:' + JSON.parse(item.result)[0]['a'] + '\n' 
                    + 'b:' + JSON.parse(item.result)[0]['b'];
        } else if(item['event-type'].trim()==='athletics'){
            result = '1:' + JSON.parse(item.result)[0]['1'] + '\n' 
                    + '2:' + JSON.parse(item.result)[1]['2'] + '\n'
                    + '3:' + JSON.parse(item.result)[2]['3'];
        }
    }
    return result;
};
也许这看起来有些头晕,但我认为使用“ng if”有局限性

所以我喜欢使用函数

我希望这能对您有所帮助。:)

很遗憾,此函数的“\n”无效


也许您需要其他方法来换行。

您可以创建一个helper方法来检查when
isResult==1
,如果数组存在,此方法将返回数组,然后在您的
ng repeat
中调用该方法并在其上循环。您能做一个简单的小提琴来解释它吗?要做到这一点,我必须查看完整的代码。您可以仅从api中筛选isResult==1,然后将数据传递给控制器以在前端获得该数据,你会在这里发布你的api代码吗?我将帮助您解决问题。您可以创建一个helper方法,用于检查何时
isResult===1
,如果数组存在,此方法将返回数组,然后在您的
ng repeat
中调用该方法并在其上循环。您能做一个简单的小提琴来解释它吗?要做到这一点,我必须查看完整的代码。您可以仅从api中筛选isResult==1,然后将数据传递给控制器以在前端获得该数据,你会在这里发布你的api代码吗?我会帮你解决的