angularjs - 我怎样才能用 ng-repeat 制作这个过滤器

标签 angularjs arrays angularjs-ng-repeat

我编写了一个社交媒体应用程序。我的个人资料页面中的个人资料菜单有问题。我希望它根据某些情况成为可见的菜单项。我确实将菜单项放入这样的数组中;

$scope.menuitems = [
    {id : "1", name : "Message", show : "other", url : ""},
    {id : "2", name : "Follow", show : "other", url : ""},
    {id : "3", name : "Followers", show : "all", url : ""},
    {id : "4", name : "About", show : "all", url : ""},
    {id : "5", name : "Statistics", show : "all", url : ""},
    {id : "6", name : "Edit", show : "own", url:""}
];

如果可见的配置文件是用户自己的配置文件,我想打印具有“show”值“own”的项目。如果可见的配置文件是另一个用户的配置文件,我想打印具有“显示”值“其他”的项目。我想在每个状态中打印具有“显示”值“全部”的项目。我为此在互联网上做了一些研究,但我想我还没有找到合适的词。我如何在 Angularjs 上使用 ng-repeat 来实现这个?

最佳答案

创建自定义过滤器

    $scope.conditionVar = 'own'; //this will change depending on what profile

    angular.module('myFilters', []).
  filter('profilefilter', function() {
    return function(items, condition) {
      var out = [];
      for (var i in items) {
        var item = items[i];
        if (item.show === 'all' || item.show === condition) {
            out.push(item);
        }
      }
      return out;
    }
  });
    <li ng-repeat="menuitem in menuitems | profilefilter:conditionVar">{{menuitem}}</li>

这是工作演示 - https://jsfiddle.net/0o7ewpgd/1/

关于angularjs - 我怎样才能用 ng-repeat 制作这个过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41900307/

相关文章:

arrays - 无法删除核心数据数据库的所有当前元素

javascript - 如何在 angular.js 中将数据从服务传递到指令

javascript - AngularJS 表达式与 StencilJS 中断

javascript - 显示多级Json中的key

javascript - 链接函数未在 AngularJS 指令中运行

java - 返回未分配给变量的数组

javascript - 跨源问题 AngularJS 在 Eclipse 中的指令

如果 malloc 失败,C 释放二维数组

键盘消失时的Android白色背景

javascript - 如何仅使用 javascript 找出屏幕上模式对话框的宽度和高度?