简体   繁体   English

将选择过滤器应用于AngularJS的特定字段?

[英]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">
...

See http://jsfiddle.net/TKq6L/ 参见http://jsfiddle.net/TKq6L/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM