【问题标题】:sencha touch store filter number煎茶触摸店过滤器编号
【发布时间】:2015-12-15 19:15:43
【问题描述】:

我在商店中使用过滤器来查找具有特定数字的条目,但是当我仅过滤单个数字时,如果特定数字出现在该数字中,过滤器也会找到其他数字。

store.filter('shiftNum', 1);

在这种情况下,过滤器可能会找到诸如 10、11、12 等条目。

由于我的商店中只有 21 个可能的数字,因此只有在过滤数字 1 或 2 时才会出现问题。 一个快速的解决方法可能是只输入两位数,例如 0.01、02。但理论上过滤器应该只搜索数字而不搜索其他数字。 我尝试更改模型中的字段以指定一个数字字段,与“自动”或“字符串”相对,但它没有帮助。

Ext.define('Sidur.model.Opt', {
        extend: 'Ext.data.Model',
        config: {
            fields: [
                {name: 'shiftNum', type: 'number'},
                {name: 'name', type: 'string'}
            ],
            proxy: {
                type: 'sqlitestorage',
                dbConfig: {
                    tablename: 'sidur'
                }
            }
        }
    }
);

(顺便说一下,数据是本地存储在WebSQL上的)

【问题讨论】:

    标签: javascript extjs filter sencha-touch store


    【解决方案1】:

    使用过滤器混合集合甚至自定义函数

    store.filter({
      property: fieldName,
      value: fieldValue,
      exactMatch: true,
      caseSensitive: true
    });
    var longNameFilter = new Ext.util.Filter({
        filterFn: function(item) {
            return item.name.length > 4;
        }
    });
    

    http://docs.sencha.com/extjs/5.0.1/#!/api/Ext.util.Filter

    【讨论】:

      【解决方案2】:

      使用filterBy

      store.filterBy(function(record, id) {
          return record.get('shiftNum') === 1;
      });
      

      【讨论】:

      • 谢谢,最后我使用了一个正则表达式,(在stackoverflow上找到并修改)虽然它对我来说没有意义,为什么需要它。从理论上讲,过滤器应该准确找到输入的数字,这似乎是一个非常基本的功能。使用正则表达式可以最有效地实现这一点。不过,我将在未来明确使用 filterBy 函数。 { property: 'shiftNum', value: /^(1)$/ }
      猜你喜欢
      • 1970-01-01
      • 2016-01-11
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 2012-11-04
      • 1970-01-01
      相关资源
      最近更新 更多