2013-02-22 11 views
7

जब मैंने रिलीज मोड में अपनी एमवीसी 4 प्रोजेक्ट चलाया, तो SlickGrid का उपयोग करने वाला एक पृष्ठ सही ढंग से प्रदर्शित नहीं हुआ (ग्रिड बहुत लंबा है, और ग्रिड कोशिकाएं गायब हैं)।न्यूनतम कोड मूल के बराबर क्यों नहीं है?

हालांकि, मुझे नहीं लगता कि यह स्लिमग्रिड का मुद्दा है, लेकिन बंडलर (System.Web.Optimization जो एमवीसी 4 में एकीकृत है) के कोड को छोटा करता है।

मैंने मिनीफाइड जावास्क्रिप्ट को पकड़ लिया और समस्या को ठीक होने तक एक समय में एक क्षेत्र में खनन को उलटना शुरू कर दिया। मैंने पाया है कि बदलते हैं तो मूल

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; 
} 

को

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} 

(और स्क्रॉल माफ, मैं वास्तव में न्यूनतम किया गया संस्करण छोड़ने के लिए के रूप में-है चाहते हैं) समस्या का समाधान करता है, तो minified फ़ाइल के अन्य सभी तत्वों अपरिवर्तित हैं SlickGrid कुछ परिणामों को फ़िल्टर करने के लिए एक कॉलबैक फ़ंक्शन प्रदान करने के लिए

dataView.setFilter(SlickFilter); 

:

समारोह की तरह किया जाता है।

यह कैसे है कि मूल और छोटा कार्य बराबर नहीं है?

अद्यतन

SlickGrid फिल्टर समारोह है कि मैं प्रदान करते हैं "संकलन" है। वह संकलन चरण minified संस्करण के साथ विफल रहा है।

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; 
} 

नोट कई वापसी बयान: संकलित न्यूनतम किया गया कोड की तरह दिखता है।

इस अतिरिक्त अंतर्दृष्टि के साथ

, मैं एक प्रासंगिक SlickGrid बग की पहचान करने में सक्षम था:

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

+0

क्या आप स्वयं जेएस को कम कर रहे हैं?वहाँ बहुत से मिनीफायर उपकरण हैं इसलिए मैं आपको एक और कोशिश करने की सलाह देता हूं। – lolol

+0

@lolol: नहीं, मैं 'System.Web.Optimization' का उपयोग कर रहा हूं जिसे एमवीसी 4 में एकीकृत किया गया है। इसे स्पष्ट करने के लिए प्रश्न को अपडेट किया गया। –

+0

मेरा बुरा, मैं वास्तव में आपकी मदद नहीं कर सकता। माफ़ कीजिये। (मुझे भी इसी तरह की समस्याएं मिलीं, लेकिन मैं इसे स्वयं कर रहा था, समस्या को हल करने वाले टूल को बदल रहा था) – lolol

उत्तर

4

एक अंतर मुझे लगता है कि item.option और args.searchString का मूल्यांकन किया जा रहा है, तब भी जब पहली शर्त यह सच है जब वे मूल कोड में नहीं होते।

क्या आपने यह देखने के लिए कोड में कदम उठाने का प्रयास किया है कि मूल्य क्या हैं और यह उन पर कैसे कार्य करता है?

यहां किसी भी अन्य को बचाने के लिए असम्बद्ध छोटा कोड है, या यदि आप इसे आजमाएं और इसमें कदम उठाना चाहते हैं।

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 
} 

संपादित (ओपी) के द्वारा

यह सही रास्ते पर मुझे मिल गया है, लेकिन यह पता चला है कि SlickGrid "संकलन" है फिल्टर समारोह। एक ज्ञात मुद्दा है कि संकलक कभी-कभी विफल रहता है। वास्तव में संकलन वैकल्पिक है और इस मामले में आवश्यक नहीं है क्योंकि minifier पहले ही अनुकूलित कोड उत्पन्न करता है।

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

+0

मैं तुम्हारे साथ हूं - यही एकमात्र अंतर है जिसे मैं देखता हूं। लेकिन उन दो वस्तुओं का मूल्यांकन करने के उस अंतर का कोई प्रभाव नहीं होना चाहिए - वे केवल मूल्यों को वापस कर रहे हैं, इसलिए कोई कोड वास्तव में किसी भी अलग तरीके से निष्पादित नहीं कर रहा है। भले ही वे अस्तित्व में न हों, फिर भी वे अनिर्धारित वापस आ जाएंगे, और कोड जारी रहेगा। शॉर्ट-सर्किट '||' का अर्थ यह होगा कि 'i' और 'r' के मान कभी भी तब तक उपयोग नहीं किए जाएंगे जब तक कि पहली पंक्ति न हो, वही व्यवहार होता है जब वे अलग-अलग' if' बयान थे। –

+0

ऐसा लगता है कि उचित कोष्ठक ठीक से ठीक करेगा ?, वापस से? – technosaurus

+0

रिकॉर्ड के लिए, यह स्वरूपित संस्करण उसी संस्करण को प्रदर्शित करता है जैसा मैंने पोस्ट किया था। अब मैं आपके सुझाव के आधार पर साइड इफेक्ट्स देखने के लिए डिबगिंग कर रहा हूं। मैं आपको बता दूँगा! –

संबंधित मुद्दे