可以使用ng-repeat查询值,但无法应用过滤器

时间:2015-05-07 17:46:04

标签: javascript html angularjs

我有一个包含以下结构对象列表的MongoDB:

{
    "_id" : ObjectId("11122223333"),
    "name" : "Bob",
    "availability" : "Availabile",
    "toolcap" : {
        "toolAA" : {
            "skill" : "certified",
            "tool" : "tool1",
            "caps" : [ 
                {
                    "name" : "cap1",
                    "expertise" : "pro"
                }, 
                {
                    "name" : "cap2",
                    "expertise" : "pro"
                }
            ]
        },
        "toolBB" : {
            "skill" : "certified",
            "tool" : "tool2",
            "caps" : [ 
                {
                    "name" : "cap3",
                    "expertise" : "semi-pro"
                }, 
                {
                    "name" : "cap4",
                    "expertise" : "novice"
                }
            ]
        }
    },
    "local" : {
        "password" : "password123",
        "email" : "bob@email.com",
        "name" : "Bob"
    }
}

我通过这个数据重复集合中的每个对象(表格的其余部分未显示):

<tr ng-repeat-start="x in users | filter:{'name':'Bob'}:true" ng-if="false"></tr>
<tr ng-repeat-start="y in x.toolcap" ng-if="false"></tr>
<tr ng-repeat="z in y.caps">
  <td>{{y.tool}}</td>
  <td>{{z.name}}</td>
  <td>{{z.expertise}}</td>
  <td>{{x.availability}}</td>
</tr>
<tr ng-repeat-end ng-if="false"></tr>
<tr ng-repeat-end ng-if="false"></tr>

这很好 - 我可以按名称过滤,相关的值会进入同一行。我遇到的问题是当我尝试使用&#34;工具&#34;进行过滤时,例如,想要查看仅与&#34; tool1&#34; (&#34; tool1&#34;必须存在,否则不要给我一行。同样的名字:Bob必须存在)。我想我可以在第2行做以下事情,只看到与&#34; tool1&#34;相关的事情:

<tr ng-repeat-start="x in users | filter:{'name':'Bob'}:true" ng-if="false"></tr>
<tr ng-repeat-start="y in x.toolcap | filter:{'tool':'tool1'"}:true" ng-if="false"></tr>
<tr ng-repeat="z in y.caps">
  <td>{{y.tool}}</td>
  <td>{{z.name}}</td>
  <td>{{z.expertise}}</td>
  <td>{{x.availability}}</td>
</tr>
<tr ng-repeat-end ng-if="false"></tr>
<tr ng-repeat-end ng-if="false"></tr>

无论我在新过滤器中加入什么,我都会收回所有内容。我希望该表如下(以逗号分隔的列):

row1:tool1,cap1,pro,available
row2:tool1,cap2,pro,available

但我得到的东西与我的第一个html片段相同:

row1:tool1,cap1,pro,available
row2:tool1,cap2,pro,available
row3:tool2,cap3,semi-pro,available
row4:tool2,cap4,新手,可用

然而,我可以过滤专业知识&#34; level(仅在专业知识为#34; pro&#34;时)才创建新行。我也试过在不同级别(每个&#34; tr&#34;),在&#34; td&#34;等级,使用x.tool而不仅仅是工具等。

0 个答案:

没有答案