Angularjs 将筛选器添加到我的ng选项中不会返回集合?

Angularjs 将筛选器添加到我的ng选项中不会返回集合?,angularjs,Angularjs,我有一个我正确迭代过的对象: <select ng-options="value.name for (key,value) in ctrl.userList"></select> 这将只显示没有任何当前指定上级的用户 现在看来,它没有显示,但应该显示1。在应用过滤器时,我是否遗漏了什么 我一直在使用的完整示例: <select ng-options="value.name for (key,value) in ctrl.userList | filter: val

我有一个我正确迭代过的对象:

<select ng-options="value.name for (key,value) in ctrl.userList"></select>
这将只显示没有任何当前指定上级的用户

现在看来,它没有显示,但应该显示1。在应用过滤器时,我是否遗漏了什么

我一直在使用的完整示例:

<select ng-options="value.name for (key,value) in ctrl.userList | filter: value.superior!=null"></select>

角度小提琴示例:

根据角度文档,过滤器的第一个参数必须是数组。你正在经过一个物体。如果userList是一个数组,它将正常工作(请尝试此操作)。您可以通过使用自定义过滤器来解决此问题

app.filter('myfilter', function() {
  return function(obj, prop, value) {
    var result = {};
    for(key in obj) {
      if(obj[key][prop] !== value)
       result[key] = obj[key];
    }
    return result;
  };
});
标记:

|myfilter: 'superior' : null

根据angular文档,过滤器的第一个参数必须是数组。你正在经过一个物体。如果userList是一个数组,它将正常工作(请尝试此操作)。您可以通过使用自定义过滤器来解决此问题

app.filter('myfilter', function() {
  return function(obj, prop, value) {
    var result = {};
    for(key in obj) {
      if(obj[key][prop] !== value)
       result[key] = obj[key];
    }
    return result;
  };
});
标记:

|myfilter: 'superior' : null

我想我会添加这个答案,以帮助您决定更改为对象数组,并帮助其他有此问题的人

HTML元素

角阵

 $scope.obj = [
    {
      name: "test",
      superior: null
    },
    {
      name: "test2",
      superior: 0
    }];

我想我会添加这个答案,以帮助您决定更改为对象数组,并帮助其他有此问题的人

HTML元素

角阵

 $scope.obj = [
    {
      name: "test",
      superior: null
    },
    {
      name: "test2",
      superior: 0
    }];


删除了一个标记,因为这不是角度2。您能提供一个我们可以运行的示例吗?比如一个可运行的代码片段或jfiddle,让我看看是否可以启动并运行一个fiddle,或者做些什么easy@Hack-R添加了它。删除了一个标记,因为这不是角度2。您能提供一个我们可以运行的示例吗?比如一个可运行的代码片段或jfiddle,让我看看是否可以启动并运行一个fiddle,或者做些什么easy@Hack-R添加了它。那么,我将如何解决这个问题?你能添加一些代码吗<代码>app.filter(“myFilter”,function(){})哪一个可以解决我的问题,而不仅仅是将我指向文档?我一直在研究这个问题,但找不到一个能帮我解决这个问题的示例。@只是确认一下:标记看起来像:
|myFilter:value
只是
|myFilter
有什么方法可以使它动态化吗?也许接受任何对象列表,然后传入任何条件,例如任意属性和期望值?我这么说是因为基于传入对象创建包含各种过滤器的js文件有点乏味,我更希望它在更一般的情况下工作。那么,我该如何解决这个问题呢?你能添加一些代码吗<代码>app.filter(“myFilter”,function(){})哪一个可以解决我的问题,而不仅仅是将我指向文档?我一直在研究这个问题,但找不到一个能帮我解决这个问题的示例。@只是确认一下:标记看起来像:
|myFilter:value
只是
|myFilter
有什么方法可以使它动态化吗?也许接受任何对象列表,然后传入任何条件,例如任意属性和期望值?我这样说是因为基于传入对象创建包含各种过滤器的js文件有点乏味,并且更希望使其在更一般的情况下工作