如何以角度过滤嵌套对象的结果

时间:2013-03-26 03:29:31

标签: javascript angularjs

我的角度像这样嵌套对象

{
"name": "John"
"age" : "23"
subjects: [

{
"description":"Math"
"length":"1 month"
},
{
"description":"English"
"length":"1 month"
}


]



}

IN角度filter可以正常使用name, age,但我怎样才能找到主题描述包含数学的学生

2 个答案:

答案 0 :(得分:0)

filters上的文档页面有一个有趣的例子。

其中,搜索框的ng-model设置为搜索。$ ,而非搜索。这似乎是匹配的外卡。

这是你的jsFiddle。在搜索框中键入任何内容,它将找到匹配的学生。

<input id="txtSearch" type="text" ng-model="search.$" />
<ol>
    <li ng-repeat="student in myData | filter:search">
        {{student.name}}
        {{student.subjects}}
    </li>
</ol>

,数据模型如下所示:

$scope.myData = [{
    "name": "Student 1",
        "age": "20",
    subjects: [{
        "description": "Math",
            "length": "1 month"
    }, {
        "description": "English",
            "length": "1 month"
    }]
}, {
    "name": "Student 2",
        "age": "22",
    subjects: [{
        "description": "Economics",
            "length": "1 month"
    }, {
        "description": "English",
            "length": "3 months"
    }]
}, {
    "name": "Student 3",
        "age": "23",
    subjects: [{
        "description": "Math",
            "length": "4 months"
    }, {
        "description": "English",
            "length": "6 months"
    }]
}];

答案 1 :(得分:-1)

不确定这是否真的是一个Angular问题 - 您需要一种方法来解析javascript中的原始json数据。

这样做的一种方法是使用像Underscore这样的功能库,它提供类似功能的功能来执行这些操作。

有关示例,请参阅http://jsfiddle.net/9W5YF/2/,并查看http://underscorejs.org以获取有关下划线的文档。

var studentsDoingMaths = _.filter(json, function (student) {
var doingMaths = doingSubject("Math");
return subjectSearch(student, doingMaths);});