在EXTJS中的变量中存储比较/布尔运算符
有没有办法将运算符作为变量存储在extjs中?我需要这个来过滤。我知道filter中的操作符配置,但由于太复杂的原因,我不得不改用filterFn 因此,假设我有这个过滤器对象:在EXTJS中的变量中存储比较/布尔运算符,extjs,extjs4.2,comparison-operators,Extjs,Extjs4.2,Comparison Operators,有没有办法将运算符作为变量存储在extjs中?我需要这个来过滤。我知道filter中的操作符配置,但由于太复杂的原因,我不得不改用filterFn 因此,假设我有这个过滤器对象: filterObj.property = 'price'; filterObj.value = input; filterObj.operator = opVar; filters.push(filterObj); store.addFilter(filters); 在这里,我可以将一个类似etc的字符串作为opV
filterObj.property = 'price';
filterObj.value = input;
filterObj.operator = opVar;
filters.push(filterObj);
store.addFilter(filters);
在这里,我可以将一个类似etc的字符串作为opVar传递,它将变成一个比较运算符。这很好用
我需要的是filterFn中的等效项。如何在那里使用opVar
作为最后的手段,我想我必须使用开关。还有其他想法吗?这就是我最后使用的,使用jrajav给出的答案 正如您所建议的,这里有一个filterFn,因为逻辑太复杂,无法进行简单的比较。您需要自己执行检查。或者,可以在过滤值之前对其进行变换。
var operate = {
'>': function(a,b) {return a>b ;},
'>=': function(a,b) {return a>=b ;},
'<': function(a,b) {return a<b ;},
'<=': function(a,b) {return a<=b ;},
'==': function(a,b) {return a==b ;},
'=': function(a,b) {return a==b ;},
'!=': function(a,b) {return a!=b ;},
'<>': function(a,b) {return a!=b ;}
};
var greater = '>';
var a= 10;
var b = someValue;
operate[greater](a,b);