在EXTJS中的变量中存储比较/布尔运算符

时间:2014-06-19 12:23:48

标签: extjs extjs4.2 comparison-operators

有没有办法将运算符存储为extjs中的变量?我需要这个过滤。我知道operators中的filter配置,但由于原因太复杂,我不得不使用filterFn

所以,假设我有这个过滤器对象:

filterObj.property = 'price';
filterObj.value = input;
filterObj.operator = opVar;

filters.push(filterObj);
store.addFilter(filters);

在这里,我可以传递一个类似'<&#;&#;;'>'等opVar,它将变成一个比较运算符。这非常有效。

我需要的是filterFn中相当于此的内容。我如何在那里使用opVar

作为最后的手段,我认为我必须使用switch。还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

这是我最终使用的,使用jrajav给出的答案here.

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);