如何在ng repeat中将js变量输入到过滤器中



我有这个:

<div ng-repeat="i in MediaFeedItems | filter: { category: 'userSelect' }" class="mediafeed--item"> 

这将遍历一个列表,并根据一个名为"category"的属性进行筛选。用户通过下拉菜单选择过滤器,并将选择分配给以下功能中的变量"userSelect":

document.getElementById('category').addEventListener("change", function() {
if(this.value == "HR") {
this.userSelect = "HR";
} else if (this.value == "Managers") {
this.userSelect = "Managers";
} else {
this.userSelect = "Colleagues";
}
});

如何在筛选器中调用该变量?

不认为你需要这个函数,只需在你的选择上放一个ng模型,并将其用于你的过滤器

(function() {
'use strict';
angular
.module('myApp', [])
.controller('myCtrl', myCtrl);
function myCtrl(){
/* jshint validthis: true */
var vm=this;
vm.items = [
{category: 'cat1', text: 'one'},
{category: 'cat1', text: 'two'},
{category: 'cat2', text: 'three'},
{category: 'cat2', text: 'four'},
];
} 
})();
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
<div ng-controller="myCtrl as vm">
<select name="singleSelect" ng-model="category">
<option value="cat1">category 1</option>
<option value="cat2">category 2</option>
</select>
<div class="row" ng-repeat="item in vm.items | filter: { category: category }">
{{item.text }}
</div>
</div>
</div>

最新更新