2013-06-25 13 views
8

आईएम ग्राहक में मेरी लौटे संग्रह के परिणाम फ़िल्टर करके एक खोज बॉक्स बनाने की कोशिश कर।उल्का रेंज त्रुटि: अधिकतम कॉल स्टैक आकार पार हो गया। कुंजी दबाने घटना पर

लेकिन जब मैं वास्तव में खोज रहा कंसोल में ऊपर त्रुटि मिल रही है की कोशिश करो।

RangeError: Maximum call stack size exceeded. 

यहां मेरे कोड पर एक नज़र डालें।

<body> 
{{#isolate}} 
<header class="row-fluid"> 
    {{> modules}} 
</header> 
{{/isolate}} 

<div id="main" class="span11"> 
{{#if currentUser}} 

{{#isolate}} 
    {{> customers_list}} 
{{/isolate}} 

{{#isolate}} 
    {{> contacts_list}} 
{{/isolate}} 

{{/if}} 
</div> 
</body> 

मॉड्यूल टेम्पलेट

<template name="modules"> 
{{templateLogger "modules"}} 
    <ul id="module_list" class="nav"> 
{{#each list}} 
    <li> 
    <a href="#" id="module_{{_id}}" module_id="{{_id}}" class="module">{{name}}</a> 
    </li> 
{{/each}} 
    <form><input type="text" id="search"></form> 
</ul> 

और मेरे customers_list टेम्पलेट है कि मैं है फिल्टर करने के लिए परिणाम

<template name="customers_list"> 
<table class="table"> 
    <tr> 
    <th>Name</th> 
    <th>Address</th> 
    <th>City</th> 
    <th>State</th> 
    <th>Zip</th> 
    <th>Phone</th> 
    </tr> 

{{#each record}} 
    <tr> 
    <td>{{name}}</td> 
    <td>{{address}}</td> 
    <td>{{city}}</td> 
    <td>{{state}}</td> 
    <td>{{zip}}</td> 
    <td>{{phone}}</td> 
    </tr> 
{{/each}} 
</table> 
</template> 

कोशिश कर रहा हूँ और यहाँ के अंदर में मेरी खोज प्रपत्र खोज फ़ॉर्म

के लिए ईवेंट हैंडलर
Template.modules.events({ 
'keypress input#search': function (event) { 
    Session.set("currentFilter", $('input#search')); 
} 
}); 

और फार्म सहायक परिणाम

Template.customers_list.record = function() { 
qry = Session.get("currentFilter") || ""; 
if (qry != "") { 
    return Customers.find({$or: [ {'name': qry}, {'address': qry}, {'city': qry}, {'state': qry} ] }); 
} else { 
    return Customers.find({competitor: null}, {sort: {name: 1}}); 
}; 
} 

मैं कोई सुराग नहीं क्या मैं क्या त्रुटि वह अपने एक अनंत की तरह लगता है के बारे में अन्य अतः पदों पर पढ़ने के लिए कर रहा था से इस त्रुटि पैदा कर रहा है प्रदर्शित करना लूप हालांकि वे उल्का विशिष्ट प्रश्न नहीं थे और मुझे नहीं पता कि इससे कोई फर्क पड़ता है या नहीं? अगर एक अनंत लूप भी है तो मैं इसे नहीं ढूंढ सकता।

कोई मदद आभारी होंगे।

उत्तर

6

इस बदलना:

Template.modules.events({ 
'keypress input#search': function (event) { 
    Session.set("currentFilter", $('input#search')); 
} 
}); 

यह करने के लिए:

Template.modules.events({ 
'keyup input#search': function (event) { 
    Session.set("currentFilter", $('input#search').val()); 
} 
}); 

मैं तुम सिर्फ .val() इनपुट क्षेत्र के jQuery डोम संदर्भ पर की जरूरत है विश्वास करते हैं। इसके अतिरिक्त मैं इस तरह के कुछ के लिए घटना के लिए keyup का उपयोग करने की सिफारिश करेंगे।

परिणाम बाहर हो रही है जैसे आप आप की संभावना रेगुलर एक्सप्रेशन का उपयोग करना चाहते हैं चाहते हैं

। यहां मैं अपने ऐप में उपयोग कर रहा हूं।

Template.hudlies.found = function() { 
    var searchVal = Session.get("searchFilter"); 
    if (searchVal != "") { 
     var searchResults = Hudlies.find({ name: { $regex: '^.*' + searchVal + '.*', $options: 'i' } }); 
    }; 

    return searchResults; 
}; 
+2

धन्यवाद यह .val था(); गायब – Moshe

+0

रेगेक्स के लिए धन्यवाद और साथ ही महान काम करता है। – Moshe

18

यह त्रुटि तब होती है जब आप बड़ी विधि को अपनी विधि के तर्क के रूप में पास करते हैं। मेरे लिए उदाहरण के लिए पहली बार मुझे इस त्रुटि का सामना करना पड़ा, जब मैंने Meteor.Collection को तर्क के रूप में पास किया था: एस। मैंने संग्रह नाम को स्ट्रिंग के रूप में पास करके और फिर आगे बढ़ने के तरीके के तरीके में eval() का उपयोग करके काम किया।

निष्कर्ष: हमेशा तरीकों आपके घटना संचालकों से कहा जाता है के लिए तर्क के रूप में तार, पूर्णांक, छोटे सरणियों या वास्तव में छोटी वस्तुओं का उपयोग करें।

+0

इसके लिए धन्यवाद। इससे मुझे मेसोस्फीयर में एक बग को ट्रैक करने में मदद मिली जो मुझे पूरे दिन सिरदर्द दे रहा है। –

+1

आपको बहुत बहुत धन्यवाद! मैं एक Meteor.method से एक ऑब्जेक्ट प्रदान करने की कोशिश की, लेकिन यह बस बहुत बड़ा था .. वास्तव में यह पता अपने आप लगा नहीं हो सकता था :) – zimt28

+0

ये दोनों अच्छे जवाब कर रहे हैं!मैंने एक ही पृष्ठ पर दो समस्याएं हल की हैं – mwarren

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