我有一个从SharePoint自定义列表返回的附件对象,每个附件都命名为ProjectID | RequestID | TaskID |文件名。
我正在尝试根据我的需要进行过滤(只有1个ID将与文件名一起出现,其余的通常为0,除非共享正在进行)但是当我过滤PID(项目ID)== 1时,它显示PID为1和17的位置。如何将过滤器拧紧以匹配EXACT?
这是plunkr。
这是我的HTML:
<body ng-controller="MainCtrl">
<h3>All Attachments:</h3>
<ul>
<li ng-repeat="att in attachments">{{att.Title}}</li>
</ul>
<hr />
<h3>Attachments for Project #1</h3>
<ul>
<li ng-repeat="pat in fstProj = (attachments | filter:{PID:'1'})">{{pat.Title}}</li>
</ul>
</body>
这是Javascript:
var app = angular.module('app', []);
app.controller('MainCtrl', function($scope, catFactory) {
$scope.attachments = catFactory.getAttachments();
});
答案 0 :(得分:0)
filter
过滤器使用字符串匹配。你想比较确切的数字,你可以通过用户定义的函数进行过滤:
<li ng-repeat="pat in attachments | filter:byPID">{{pat.Title}}</li>
$scope.byPID = function (item) {
return item.PID === 1;
}
另请参阅此 short demo 。
<强>更新强>
当然,如果你愿意使用更新版本的Angular(不是来自1.0。*分支)(你绝对应该),那么第三个参数将被传递给filter
,为了进行严格匹配(而不是子字符串):
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js" ...>
...
<li ng-repeat="pat in attachments | filter:{PID:1}:true">{{pat.Title}}</li>
在这种情况下,不需要改变任何其他内容。
另请参阅此 other demo 。