Javascript 在单击按钮时在角度过滤器之间切换
我在angular模块中编写了一些不同的自定义过滤器,以实现我想要的排序,例如 角度:Javascript 在单击按钮时在角度过滤器之间切换,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我在angular模块中编写了一些不同的自定义过滤器,以实现我想要的排序,例如 角度: var sortByValue = function() { return function(input) { /*...*/ return some_boolean; } }; var sortByCount = function() { return function(input) { /*...*/ return some
var sortByValue = function() {
return function(input) {
/*...*/
return some_boolean;
}
};
var sortByCount = function() {
return function(input) {
/*...*/
return some_boolean;
}
};
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();
}
}
在myHTML(jade)中,我可以调用不同的过滤器:
.row(ng-repeat='item in array | sortByValue')
或
我现在想添加一个按钮,在两个不同的排序选项之间切换。
我试图通过定义一个新的整体过滤器函数来实现这一点,该函数使用
$scope
变量来跟踪切换(见下文),但它不起作用
角度:
var sortByValue = function() {
return function(input) {
/*...*/
return some_boolean;
}
};
var sortByCount = function() {
return function(input) {
/*...*/
return some_boolean;
}
};
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@可以使用一个自定义筛选函数和一个参数
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
“你有个疯狂的代言人,@charlietfl。谢谢我来看看!由于一些未知的原因,我无法理解,这对我也不起作用,:(但是,理想情况下,我更愿意将我的自定义过滤器分开,因为一些列表不会使用所有的过滤器。很公平。如果有帮助,还可以在过滤器中设置默认值,使用和
$filter
$scope.sortType = 'order' // or 'value'
$scope.toggleSort = function(type){
$scope.sortType = type;
}