相关疑难解决方法(0)

AngularJS Group by Directive without External Dependencies

我是Angular的新手,想学习处理问题的最佳方法.我的目标是有一个可重用的方法来创建按标题分组.我创建了一个可行的解决方案,但我认为这应该是一个指令,而不是我的控制器中的范围函数,但我不知道如何实现这一点,或者指令是否是正确的方法.任何投入将不胜感激.

看看我目前处理jsFiddle的方法

在HTML中,它是一个使用ng-repeat的简单列表,我在ng-show上调用newGrouping()函数.该函数传递对完整列表的引用,我想要分组的字段和当前索引.

<div ng-app>
<div ng-controller='TestGroupingCtlr'>
    <div ng-repeat='item in MyList'>
        <div ng-show="newGrouping($parent.MyList, 'GroupByFieldName', $index);">
            <h2>{{item.GroupByFieldName}}</h2>
        </div>
        {{item.whatever}}
    </div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我有newGrouping()函数,它只是将当前值与之前的值进行比较,第一项除外,并根据匹配返回true或false.

function TestGroupingCtlr($scope) {

  $scope.MyList = [
    {GroupByFieldName:'Group 1', whatever:'abc'},
    {GroupByFieldName:'Group 1', whatever:'def'},
    {GroupByFieldName:'Group 2', whatever:'ghi'},
    {GroupByFieldName:'Group 2', whatever:'jkl'},
    {GroupByFieldName:'Group 2', whatever:'mno'}
  ];

  $scope.newGrouping = function(group_list, group_by, index) {
  if (index > 0) {
    prev = index - 1;
    if (group_list[prev][group_by] !== group_list[index][group_by]) {
      return true;
    } else {
      return false;
    }
  } else {
    return true;
  } …
Run Code Online (Sandbox Code Playgroud)

group-by angularjs angularjs-directive angularjs-ng-repeat ng-show

27
推荐指数
2
解决办法
5万
查看次数