2014-05-18 108 views
6

自定义排序功能这是我的代码额外的参数传递到AngularJS

<a href="" ng-click="predicate = 'productname'; reverse=false">Productname</a> 
<a href="" ng-click="predicate = 'productprice'; reverse=false">Productprice</a> 

迭代

<div ng-repeat="sale in sales | orderBy:customSort"> 

Customsort功能

$scope.customSort = function(sale) { 


}; 

目前在customSort功能我得到的所有销售数据,但我也希望将谓词值传递给该函数,以便它可以相应地进行排序(如果是nam,则按名称排序e被点击,如果价格谓词被点击则按价格排序。)

如何将谓词值传递给customSort函数?任何人都可以帮助我解决这个问题吗?谢谢。

+1

使用冒号标记分隔参数[见过滤文档( https://docs.angularjs.org/guide/filter) – charlietfl

+0

@charlietfl这应该是一个答案 – Valerij

+0

@charlietfl [orderBy](https://docs.angularjs.org/api/ng/filter/orderBy)似乎只是采取一个表达 –

回答

14

你可以调用与谓语您的自定义排序,并返回一个封口是你原来的功能,现在你的函数可以访问断言:

<div ng-repeat="sale in sales | orderBy:customSort(predicate)"> 

$scope.customSort = function(predicate) { 
    return function(sale) { 


    }; 
}; 
+0

这正是我正在寻找的。谢谢很多伴侣。 – user727728

+0

这解决了我将$ viewValue传递给返回函数的问题,但是我想知道如何执行这样的事情。我注意到,在每次击键时,自定义排序“工厂”让我们只是调用它,被调用。 https://gist.github.com/jusopi/283887919b87cba5edb6 – jusopi

+1

@ jusopi如果仅在每次按键时调用它,我认为它不太可能有任何明显的影响。如果在每次迭代中调用它,那么可能会有麻烦,但不应该发生 –