angular.js选择输入框的过滤器类型

时间:2014-05-25 07:19:17

标签: javascript angularjs

我正在使用angular.js很短的时间,有时候我有一种感觉,我对html和javascript一无所知,因为在我想象中应该按照角色的几率,而且可能非常简单。

这是我的头痛:

我的电流控制器scope.persons是工厂从后端获得的人员名单。 它很好地显示了ng-repeat和带输入的过滤器:

<input ng-model='query.firstname'> // search by firstname
<input ng-model='query.lastname'> // search by lastname

<ul>
    <li ng-repeat='person in persons | filter: query'> firstname: {{person.firstname}}, lastname: {{person.lastname}}
</ul>

但我希望能够选择应该过滤的内容。

类似的东西:

<select> 
    <option value='query.firstname'> by firstname </option>
    <option value='query.lastname'> by lastname </option>

我试图在很多方面搞乱,我很尴尬地表示:),但我失去了如何连接选择输入ng-model ...

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您可以尝试这种方法。 HTML:

<select ng-model="filter">
    <option value='firstname'>by firstname </option>
    <option value='lastname'>by lastname </option>
</select>

<input ng-model='query'>

<ul>
    <li ng-repeat='person in persons | filter: getFilter()'> firstname: {{person.firstname}}, lastname: {{person.lastname}}
</ul>

并在控制器中动态构建过滤器表达式:

$scope.getFilter = function() {
    var filter = {};
    filter[$scope.filter] = $scope.query;
    return filter;
};

演示:http://plnkr.co/edit/W5dIMYp3C8p3Yid9iglE?p=preview