【问题标题】:Create a filter on arbitrary properties dynamically动态创建任意属性的过滤器
【发布时间】:2013-10-02 12:36:17
【问题描述】:

我想做的事的例子:

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. 如果没有,有什么替代方案吗?

注意:如果重要,请使用 OData 提供程序。

【问题讨论】:

    标签: javascript code-generation odata jaydata


    【解决方案1】:

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

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

    所以用一些字符串 concat 可以达到你想要的效果

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

    【讨论】:

    • 谢谢,可以的。
    • 你怎么能做 contains 而不是 ==
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多