我在使用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
}
]
}
}
}
答案 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