首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getStore().filter

getStore().filter
EN

Stack Overflow用户
提问于 2015-07-09 13:38:19
回答 1查看 914关注 0票数 1

我创建了一个简单的函数。如果我向users_filter添加值(例如: var users_filter = "abc"),那么筛选检查名。但是filter并不是检查中间名、姓氏或电子邮件。为什么?我不使用逻辑或过滤器?

代码语言:javascript
复制
click: function(){
      Ext.getCmp('users').getStore().filter('firstname' ||'middlename' || 'lastname' || 'email',
      Ext.getCmp('users_filter').getValue());
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-09 13:50:59

您的第一个问题是基本的javascript。or运算符最初用于布尔操作。但是,由于一些价值评估为真或假(真/假),我们可以利用它,以我们的优势,例如,分配。

代码语言:javascript
复制
var filterVariable = 'firstname' ||'middlename' || 'lastname' || 'email';
    console.log(filterVariable); //returns 'firstname'

考虑一下这个片段:

代码语言:javascript
复制
var someFilter,
    defaultFilter = 'lastname';

if(condition) { 
    someFilter = 'firstname';
}

var filterVariable = someFilter || defaultFilter;

现在,如果条件为=== true => filterVariable计算为'firstname‘,则=> filterVariable计算为'lastname’

但是,如果someFilter设置为"", 0, [], null, ...,则要小心,它将计算为false,并取defaultFilter.

所以你写的永远都行不通!

撇开这个..。这将起作用:

代码语言:javascript
复制
click: function(){
    var store = Ext.getCmp('users').getStore(),
        val = Ext.getCmp('users_filter').getValue();

    store.filterBy(function(rec){
        return rec.get('firstname') === val ||
               rec.get('middlename') === val || 
               rec.get('lastname') === val ||
               rec.get('email') === val; 
    });
}

fwi:我尽量避免Ext.getCmp()。如果你想要重用部分。那就有可能有两个用户-面板.密码被破坏了。也许在这种情况下这听起来很傻,但通常从你点击的按钮向上或向下工作会更好.

代码语言:javascript
复制
click: function(button) { 
    var usersGrid = button.down('users'); 
    //...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31319221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档