【问题标题】:how can i make this filter with ng-repeat我怎样才能用 ng-repeat 制作这个过滤器
【发布时间】:2017-01-28 04:37:05
【问题描述】:

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

$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:""}
];

如果可见配置文件是用户自己的配置文件,我想打印具有“显示”值“自己”的项目。如果可见配置文件是另一个用户的配置文件,我想打印具有“显示”值“其他”的项目。而且我想在每种情况下打印具有“显示”值“全部”的项目。我为此在互联网上做了一些研究,但我想我没有找到合适的词。我如何在 Angularjs 上使用 ng-repeat 制作这个?

【问题讨论】:

  • 一次只能做 1 个过滤器
  • 例如,如果可见的个人资料是用户自己的个人资料,我想这样做 if(item.show != 'other')。但我找不到如何在 ng-repeat @Sajeetharan 中写作
  • 您在哪个 $scope 变量上保留可见配置文件?
  • $scope.areyou @TomePejoski
  • @EnesGiray 在那个对象上你也有show 属性,对吧?

标签: angularjs arrays angularjs-ng-repeat ng-repeat


【解决方案1】:

创建自定义过滤器

    $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/

【讨论】:

  • 我试过但没用 我试过但没用。我没有收到任何错误,但未列出元素
  • 我只是通过更改变量名来编写您的代码
  • 你需要采取这个代码的逻辑实现,也有点来自你的端以及我们没有可用的代码
  • 我通过看你的例子准备了这个例子; jsfiddle.net/Enesozgry/bx5dxc6d/3
  • 我误解了过滤器逻辑。我解决了我的问题。谢谢你:)
猜你喜欢
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 2020-04-12
  • 2021-12-11
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多