Ваша первая проблема - это простой javascript. Оператор или изначально предназначен для булевых операций. Но поскольку некоторые значения оцениваются как истинные или ложные (правдивые/ложные), мы можем использовать их в наших интересах, например. назначение.
var filterVariable = 'firstname' ||'middlename' || 'lastname' || 'email';
console.log(filterVariable); //returns 'firstname'
рассмотреть этот фрагмент:
var someFilter,
defaultFilter = 'lastname';
if(condition) {
someFilter = 'firstname';
}
var filterVariable = someFilter || defaultFilter;
теперь, если условие === истина => filterVariable оценивает как 'FirstName' еще => filterVariable оценивает как 'фамилия'
Но будьте осторожны если значение параметра SomeFilter равно "", 0, [], null, ...
, оно будет оцениваться как ложное и принять значение по умолчанию.
Так что вы написали никогда не сможете к!
Это в стороне .. это будет работать:
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(). Что произойдет, если вы захотите повторно использовать детали. Тогда возможно, что у вас есть 2 панели пользователей ... и код сломан. Может быть, в этом случае это звучит глупо, но обычно работает вверх или вниз от кнопки, которую вы нажали, лучше ...
click: function(button) {
var usersGrid = button.down('users');
//...
}