单击按钮时在角度过滤器之间切换
Switching Between Angular Filters On Button Click
我在我的角度模块中编写了几个不同的自定义过滤器来实现我想要的排序,例如
角:
var sortByValue = function() {
return function(input) {
/*...*/
return some_boolean;
}
};
var sortByCount = function() {
return function(input) {
/*...*/
return some_boolean;
}
};
在我的 HTML(jade)中,我可以这样调用不同的过滤器:
.row(ng-repeat='item in array | sortByValue')
或
.row(ng-repeat='item in array | sortByOrder')
我现在希望添加一个按钮,用于在两个不同的排序选项之间切换。
我试图通过定义一个新的整体过滤器函数来做到这一点,该函数使用 $scope
变量来跟踪切换(见下文),但它不起作用。
角:
var myController = function($scope) {
// function called on ng-init
$scope.initialize = function() {
$scope.byValue = true;
}
};
var sortFunction = function() {
if($scope.byValue) {
return sortByValue();
} else {
return sortByCount();
}
}
我还尝试将 $scope
变量传递给 HTML 本身的过滤器,例如 sortFunction:byValue
但它也不起作用。
谁能帮忙?谢谢!
演示 plunker @ plnkr.co/edit/altzOow7aIQhqKTN93Oe?p=preview?
可以使用一个自定义过滤器函数和一个参数
app.filter('mySorter', function(){
return function(items, sortType){
// sort logic
if(!items) return;
return items.sort(function(a, b){
if(sortType=== 'order'){
// order matching
}else{
// value matching
}
});
}
});
.HTML
.row(ng-repeat='item in array | mySorter: sortType')
<button ng-click="toggleSort('order')">
然后在控制器中切换变量sortType
$scope.sortType = 'order' // or 'value'
$scope.toggleSort = function(type){
$scope.sortType = type;
}
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- JavaScript中的函数和对象之间没有区别吗?
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Jquery在函数之间传递表行
- 根据某些条件在视图之间切换
- 在控制器和数据对象之间同步数据
- 为什么我的d3.jsselectAll+过滤器没有过滤
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- d3中堆栈函数和嵌套函数之间的差异
- JQuery:在页面之间滑动
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 操作放置在画布上的元素之间的连接
- 两个日期之间的自定义过滤器 AngularJS
- 单击按钮时在角度过滤器之间切换
- AngularUI:在应用过滤器的情况下正确更新两个列表之间的模型
- 如何在角度应用程序之间共享过滤器
- 两次验证之间的角度过滤器不起作用
- 使用javascript过滤器的两个数组之间的差异