动态创建任意属性的过滤器

时间:2013-09-26 13:43:10

标签: javascript code-generation odata jaydata

我希望能够做到的例子:

query.filter(function (person) {
    return person[this.field] == this.value;
}, {
    field: 'FirstName',
    value: 'Lea'
});

这引发JayData 1.3.2的异常。 请注意,使用[]语法对属性名称进行硬编码可以按预期工作(尽管没有用):

query.filter(function (person) {
    return person['FirstName'] == this.value;
}, {
    value: 'Lea'
});
  1. 如果没有eval()技巧,这可能吗?
  2. 如果没有,有什么替代方案吗?
  3. 注意:如果重要,请使用OData提供程序。

1 个答案:

答案 0 :(得分:1)

是的,它不受支持 query.filter()有另一种格式:

  query.filter('it.something == this.something')

所以用一些字符串concat可以实现你想要的东西

  query.filter('it.'+field+' == this.value', { value: 'Lea'})