如果标志为true,则对列进行排序orderby angularJS

如果标志为true,则对列进行排序orderby angularJS,angularjs,Angularjs,默认情况下,我有一个在name列上排序的表。我想根据isSortingRequired标志对其进行增强,使排序行为可选。如何在模板中提供条件orderby子句。您可以使用三元运算符,如 orderBy:(isSortingRequired?'CONDITION_FOR_SORT_REQUIRED':'CONDITION_FOR_SORT_NOT_REQUIRED') 您可以使用三元运算符,如 orderBy:(isSortingRequired?'CONDITION_FOR_SORT_REQU

默认情况下,我有一个在
name
列上排序的表。我想根据
isSortingRequired
标志对其进行增强,使排序行为可选。如何在模板中提供条件
orderby
子句。

您可以使用三元运算符,如

orderBy:(isSortingRequired?'CONDITION_FOR_SORT_REQUIRED':'CONDITION_FOR_SORT_NOT_REQUIRED')

您可以使用三元运算符,如

orderBy:(isSortingRequired?'CONDITION_FOR_SORT_REQUIRED':'CONDITION_FOR_SORT_NOT_REQUIRED')

'
被传递到
orderby
过滤器时,它会尝试按对象的
hashkey
排序,这可能会按照记录的顺序产生问题。解决方案是使用下面定义的自定义过滤器,如果标志为true,则使用内置的orderby过滤器

 .filter('customOrder',function($filter)
    {
        return function(friend, prediate,isSortRequired){
          if(!isSortRequired)
          return friend;
          else
          {
            var result = $filter("orderBy")(friend, prediate);
              return result;
          }

        }
    });
可以看到解决方案。这解决了我的问题

'
被传递到
orderby
过滤器时,它会尝试按对象的
hashkey
排序,这可能会按照记录的顺序产生问题。解决方案是使用下面定义的自定义过滤器,如果标志为true,则使用内置的orderby过滤器

 .filter('customOrder',function($filter)
    {
        return function(friend, prediate,isSortRequired){
          if(!isSortRequired)
          return friend;
          else
          {
            var result = $filter("orderBy")(friend, prediate);
              return result;
          }

        }
    });

可以看到解决方案。这解决了我的问题。

在演示plnkr中,我刚刚根据静态标志显示。通过更改其值来检查输出。如果行数为10,如果有10条以上的记录,且标志为false,则此方法可以正常工作。它只会给我一个加扰顺序。在演示plnkr中的此插件中,我刚刚基于静态标志显示。通过更改其值来检查输出。如果行数为10,如果有10条以上的记录,且标志为false,则此方法可以正常工作。它只会给我一个加扰顺序。在本plunker中演示