2013-02-22 15 views
7

MVC 4 projemi Yayınlama modunda çalıştırdığımda, SlickGrid kullanan bir sayfa doğru görüntülenmedi (ızgara çok, çok uzun ve ızgara hücreleri eksik). Bununla birlikte, bunun SlickGrid'in bir sorunu olduğunu düşünmüyorum; ancak, bundler'ın (MVC 4'e entegre edilen System.Web.Optimization) kodu nasıl küçültdüğünü düşünmüyorum.Minified Code neden Orijinal ile Eşdeğer değil?

Minified JavaScript'i yakaladım ve sorun giderilene kadar bir kerede bir alandaki küçültmeyi tersine çevirmeye başladım. Ben değiştirmenin orijinal

function SlickFilter(item, args) { 
    if (item.pctSortKey.key < args.percentCompleteThreshold) { 
     return false; 
    } 

    if (args.searchString != "" && item.option.indexOf(args.searchString) == -1 && item.option != "Unweighted Response" && item.option != "Median" && item.option != "Average") { 
     return false; 
    } 

    return true; 
} 

için

function SlickFilter(n,t){var i=n.option,r=t.searchString;return n.pctSortKey.key<t.percentCompleteThreshold||r!=""&&i.indexOf(r)==-1&&i!="Unweighted Response"&&i!="Median"&&i!="Average"?!1:!0} 

(ve kaydırma affet, olduğu gibi-tam minified versiyonunu bırakmak istiyorum) olduğu tespit sorunu çözüp çözmediğini küçültülmüş dosyanın tüm diğer unsurları değişmez. SlickGrid belirli sonuçlar filtrelemek için bir geri arama işlevi sağlamak için

dataView.setFilter(SlickFilter); 

:

fonksiyonu

gibi kullanılır.

Orijinal ve minimize edilmiş işlev nasıl eşdeğer değil?

GÜNCELLEME

SlickGrid ben sağlayan filtre fonksiyonunu "derleme" dır. Bu derleme adımı, indirgenmiş sürümü ile başarısız oluyor.

function anonymous(_items,_args) { 
var _retval = [], _idx = 0; var n, t = _args; _coreloop: for (var _i = 0, _il = _items.length; _i < _il; _i++) { n = _items[_i]; 
    //debugger; 
    var i = n.option, 
     r = t.searchString; 

    return 
    n.pctSortKey.key < t.percentCompleteThreshold 
    || 
    r !="" 
     && i.indexOf(r)==-1 
     && i != "Unweighted Response" 
     && i != "Median" 
     && i != "Average" 
? !1 
: !0 
; } return _retval; 
} 

Not birden dönüş ifadeleri: derlenmiş minified kod benziyor. Bu ek anlayış ile

, ben ilgili SlickGrid hata tanımlayabildiyse:

https://github.com/mleibman/SlickGrid/issues/301

+0

Js'yi tek başına mı kesiyorsunuz?Orada bir sürü minyatür aracı var, bu yüzden başka birini denemenizi tavsiye ederim. – lolol

+0

@ololol: Hayır MVC 4'e entegre edilen 'System.Web.Optimization' kullanıyorum. Bunu açıklığa kavuşturmak için soruyu güncelledik. –

+0

Kötü, sana gerçekten yardım edemem. Afedersiniz. (Ben benzer sorunları var, ama ben kendim yapıyordum, aracı sorunu çözerek değiştirdi) – lolol

cevap

4

gördüğüm tek fark item.option ve args.searchString değerlendirilmektedir olmasıdır bile ilk şart orijinal kodda bulunmayacakları zaman doğrudur.

Değerlerin ne olduğunu ve bunların nasıl işlediğini görmek için kodun içine girmeyi denediniz mi?

Burada, başkasını aynı şekilde kaydetmek için ya da denemek ve içine adım atmak istiyorsanız, işlenmemiş küçültülmüş kod. (OP tarafından)

function SlickFilter(n,t) { 
var i = n.option, 
    r = t.searchString; 

return 
     n.pctSortKey.key < t.percentCompleteThreshold 
     || 
     r !="" 
      && i.indexOf(r)==-1 
      && i != "Unweighted Response" 
      && i != "Median" 
      && i != "Average" 
    ? !1 
    : !0 
} 

DÜZENLEME

Bu doğru yolda beni var, ama SlickGrid filtre fonksiyonunu "derleme" olduğu ortaya çıktı. Derleyicinin bazen başarısız olduğu bilinen bir sorun var. Gerçekten de, derleme zaten optimize edilmiş bir kod ürettiği için isteğe bağlı ve bu durumda gerekli değildir.

https://github.com/mleibman/SlickGrid/issues/301

+0

Seninleyim - gördüğüm tek fark bu. Fakat bu iki maddeyi değerlendirmenin bu farklılığı herhangi bir etkiye sahip olmamalıdır - sadece değerleri geri döndürüyorlar, bu yüzden hiçbir kod aslında farklı bir şekilde yürütülüyor. Var olmasalar bile tanımlanamayacaklar ve kod devam edeceklerdi. Kısa devreli '||', ilk satırın gerçekleşmemesi durumunda 'i' ve' r' değerlerinin hiçbir zaman kullanılmayacağı anlamına gelir; –

+0

Uygun parantez doğru düzeltmek gibi görünüyor? – technosaurus

+0

Kayıt için, bu biçimlendirilmiş sürüm, gönderdiğim sürümle aynı davranışı gösterir. Şimdi öneriye dayalı yan etkileri aramak için hata ayıklama yapıyorum. Seni bilgilendirecegim! –