2016-03-31 47 views
0

True to allow any match - no regex start/end line anchors will be added (Filter.js'deki yoruma göre) için izin vermek üzere anyMatch: true kullanılmasını uyguladığım bir mağazaya çok yollu bir bağım var. Benim sorunum, multiselect-search-whole-string cevap gereğince bu uygulamaya ihtiyaç vardır özellikle bu keman sağlanan solüsyon https://fiddle.sencha.com/#fiddle/jf5MultiSelect araması için ExtJS'de Filter.JS için herhangi bir varsayılan varsayılan değiştirme

Ne olursa olsun sadece, anyMatch: true ayarlanır yapmak istiyorum, bu yüzden Filter.js içinde ayarlayın, ama bunun kullanımı üzerinde hiçbir etkisi yoktur. Tüm kod aralığını, anyMatch: false'un diğer örnekleri için aradım ve yalnızca diğeri ext-all-debug.js. Neden bu değerleri herhangi bir etkiye sahip değilsiniz? Bu varsayılan değerin nerede ayarlanabileceğini görmüyorum? 1

DÜZENLEME ben farklı kılma çalıştı ve bunun doğru bir davranış sergileyen etmemesine karşın, bu sefer gerçekten bir şeyler yapıyor. MultiSelector denetimi içinde search özniteliğinde gömülü olduğunda işe yarayan kod yığınından bu yana, MultiSelectorSearch'ün search yönteminde ne bulunduğuna karar verdim, bunun için geçersiz kılmaya odaklanmak gerektiğiydi.

Ext.define('Ext.overrides.view.MultiSelectorSearch', { 
    override: 'Ext.view.MultiSelectorSearch', 

    search: function (text, me) { 
     var filter = me.searchFilter, 
      filters = me.getSearchStore().getFilters(); 

     if (text) { 
      filters.beginUpdate(); 

      if (filter) { 
       filter.setValue(text); 
      } else { 
       me.searchFilter = filter = new Ext.util.Filter({ 
        id: 'search', 
        property: me.field, 
        value: text, 
        anyMatch: true 
       }); 
      } 

      filters.add(filter); 

      filters.endUpdate(); 
     } else if (filter) { 
      filters.remove(filter); 
     } 
    } 

}); 

DÜZENLEME 2

Anladım: Bu ince ayarlar hakkında herhangi bir öneriniz en hoş olurdu! Anahtar, başlangıçta, bu kod bir tekil olarak gömüldüğünden, me'u çağrı form.panelinden geçirerek yönteme başvurabilirdim. Bu geçersiz kılınmış olarak küresel çalışır ve

search: function (text) { 
    var me = this, 

umarım bu birilerinin yardımcı olarak yöntemini tanımlamak için beni gerekli değildi!

cevap

1

Tümü debug.js'de değişiklik yapmak güvenli değildir, bir üretim yaptığınızda bu dosya eklenmez.

Filtre sınıfını geçersiz kılmanın en iyi yolu, bunu nasıl yapabileceğinizdir. o Filter.js doğrudan manipülasyon yoluyla çalışıyor olmasa

Ext.define('Ext.overrides.util.Filter', { 
    override: 'Ext.util.Filter', 

    anyMatch: true 
}); 

Ve application.js

yılında
Ext.require([ 
    'Ext.overrides.util.Filter' 
]); 
+0

Ben geçersiz kılma çalışacaktı bu sınıfını içe ama ben de işte o zaman olmaz Çalış, ve yeterince emin, bir geçersiz kılma çalışmıyor. Diğer geçersiz kılmalarım var, ben de bunları beğenirim. Cevabını düzenledim, ama görünüşe göre akran incelemesi yapmak zorunda. Her neyse, ad alanını 'Ext.overrides.util.Filter' ve Application.js'de içe aktarılacak sınıf olarak değiştirdim. –

+0

Bu, özellikle yukarıdaki kemanı temel alan arama özniteliğine yaptığım değişiklik temelde farklı bir yer olan "anyMatch: true" ile aynı şeyi yapıyor olduğundan anlam ifade etmiyor. –

+0

Öncelikle iyi yapamayacağını düşündükten sonra beni geçersiz kılmaya yönlendirmek için bir nokta verdim. –