[英]Apply select filter to specific fields with AngularJS?
How can I use a single select for statuses but filter different fields based on selected? 如何为状态使用单一选择,但如何根据选择过滤不同的字段?
Use: 采用:
<select name="status" ng-model="status">
<option value="">All statuses</option>
<option value="false">Unread</option>
<option value="true">Read</option>
<option value="false">Unpublished</option>
<option value="true">Publish</option>
</select>
<li ng-repeat="message in messages | filter:status | orderBy:'-created_at' ">
<p>
<a href="#/messages/{{ message.id }}/">{{ message.message|truncate:100 }}</a>
<a>{{ message.type }}</a>
</p>
</li>
Example JSON: JSON示例:
{
"id":18,
"type":"Complaint",
"message":"Amet ad nihil dolore delectus ad. Ea quis sed rerum excepturi est ratione. Provident enim porro.",
"read":false,
"publish":false,
"created_at":"1973-03-31 13:43:57",
"updated_at":"2003-04-28 02:31:03"
}
More info I need status publish to find all message.publish = true
, for example. 更多信息例如,我需要状态发布来查找所有
message.publish = true
。 Field specific without using two select boxes... http://jsfiddle.net/lewiswharf/3a3DT/2/ 特定于字段而不使用两个选择框... http://jsfiddle.net/lewiswharf/3a3DT/2/
You can pass an object to the filter expression based on the select status 您可以根据选择状态将对象传递给过滤器表达式
In the controller 在控制器中
$scope.messageFilterOptions = [
{ label: "All statuses", filterExp: {} },
{ label: "Unread", filterExp: { read: false } },
{ label: "Read", filterExp: { read: true } },
{ label: "Unpublished", filterExp: { publish: false } },
{ label: "Publish", filterExp: { publish: true } }
];
$scope.selectedMessageFilter = $scope.messageFilterOptions[0];
In the view 在视图中
<select ng-model="selectedMessageFilter" ng-options="o.label for o in messageFilterOptions"></select>
<ul>
<li ng-repeat="message in messages | filter: selectedMessageFilter.filterExp">
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.