Angular JS - 如何使用多个链接过滤列表

时间:2014-03-06 11:00:07

标签: javascript angularjs

我在使用Angular JS中的过滤器功能时遇到了问题。 我必须使用不同的链接过滤我的列表。 我无法理解如何过滤列表。试过一些例子,但它不起作用。我该怎么做?? 这是我现在的代码:

HTML

<tr ng-repeat="rubric in examplerevisions | filter:myFilter" class="{{rubric.translationProposal.validations[0].class}}">
    <td></td>
    <td>{{rubric.translationProposal.validations[0].createdBy}}</td>
    <td>{{rubric.translationProposal.validations[0].createdOn | date:'dd/MM/yyyy'}}</td>
    <td>{{rubric.translationProposal.validations[0].action}}</td>
    <td>{{rubric.action}}</td>
</tr>

<a href="" ng-click="myFilter = {action: 1}">OK</a>
<a href="" ng-click="myFilter = {action: 2}">New Proposal</a>
<a href="" ng-click="myFilter = {action: 3}">Null</a>

JS

$ scope.examplerevisions包含我的所有行

JSON示例阵列

{
"1":{
    "id":1,
    "action":1,
    "translationProposal":{
        "id":1,
        "status":"ACCEPTED",
        "createdOn":1393946608751,
        "createdBy":12,
        "validations":[
            {
                "id":0,
                "action":"ACCEPT",
                "proposedAlternative":"Traduzione alternativa",
                "createdOn":1393946608751,
                "createdBy":12
            }
        ]
    }
}
}

2 个答案:

答案 0 :(得分:0)

当您查看页面的最后一个示例:http://docs.angularjs.org/api/ng/filter/filter时,我认为参数应该类似于ng-click="myFilter.action = 1"myFilter[1].action = 1

你能提供一个JsFiddle或者可以试试的东西吗?

编辑:我不知道是否有可能这样做。我可能会为此编写自己的过滤器。或者我会将JSON转换为数组,就像我在这里做的那样:

http://plnkr.co/edit/S9MvwFlpczWxqciVP72V

或者如果你想继续使用对象格式,请查看此答案: AngularJS sorting by property

答案 1 :(得分:0)

<tr ng-repeat="rubric in examplerevisions | filter:myFilter" class="{{rubric.translationProposal.validations[0].class}}">
<td></td>
<td>{{rubric.translationProposal.validations[0].createdBy}}</td>
    <td>{{rubric.translationProposal.validations[0].createdOn | date:'dd/MM/yyyy'}}</td>
    <td>{{rubric.translationProposal.validations[0].action}}</td>
    <td>{{rubric.action}}</td>
</tr>

<a href="" ng-click="myFilter[1].action = 1}">OK</a>
<a href="" ng-click="myFilter[1].action = 2}">New Proposal</a>
<a href="" ng-click="myFilter[1].action = 3}">Null</a>

应该做一个技巧,如果你想按节点的值过滤对象,那么myFilter需要是你对象的根

------编辑----------

dunno为什么我没有立即注意到它,过滤器不能真正用于对象对象,你需要一个对象数组,在这里查看你的plunker的更新版本:http://plnkr.co/edit/ejbZXqhwdrF1yopIaM61?p=preview