2012-02-29 22 views
13

मैंने कोने में अपना रास्ता कोड किया है।Jquery मोबाइल सूचीदृश्य - प्रारंभ प्रारंभ जांच

मुझे सूची में listview("refresh") पर कॉल करने की आवश्यकता है, हालांकि यह उस बिंदु पर प्रारंभ नहीं किया जा सकता है जब मैं रीफ्रेश विधि को कॉल कर रहा हूं।

क्या यह जांचने का कोई तरीका है कि घटक प्रारंभ हुआ है या नहीं?

यह वह जगह है त्रुटि मैं:

कॉल नहीं कर सकते सूचीदृश्य पूर्व पर तरीकों

+0

कुछ उदाहरण कोड अच्छा, http होगा: // jsfiddle.net –

+0

मॉड्यूलर विकास फिल के साथ यह समस्या है, jsfiddle में एक ही परिदृश्य का उत्पादन करना बहुत मुश्किल है। मैं एक लोड मॉड्यूल पर एक विधि बुला रहा हूं यह नहीं जानता कि कोई सूचीदृश्य प्रारंभ किया गया है या नहीं। यह उपयोगकर्ता कनेक्शन की गति पर निर्भर होगा। मैंने इसे ध्वज का उपयोग करके समय के लिए हल कर लिया है। मैंने सोचा कि सूचीदृश्य घटक को कॉल करने और इसकी स्थिति की जांच करने का एक तरीका हो सकता है। – Chin

उत्तर

21

जब एक listview विजेट आरंभ नहीं हो जाता है, यह ui-listview दिया है करने के लिए कक्षा, इसलिए हम इस वर्ग के लिए परीक्षण कर सकते हैं कि यह प्रारंभ किया गया है या नहीं:

//select the listview 
var $myUL = $('#my-ul-element'); 

//add a list-item to the listview 
$myUL.append('<li>I\'m New!</li>'); 

//check if the listview has the ui-listview class 
if ($myUL.hasClass('ui-listview')) { 

    //this listview has already been initialized, so refresh it 
    $myUL.listview('refresh'); 
} else { 

    //this listview has not yet been initialized, so it gets initialized 
    $myUL.listview();//or you can use .trigger('create'); 
} 

इससे आपको जो त्रुटि मिल रही है उसे कम करने में मदद करनी चाहिए।

इसके अलावा, .hasClass('[class]') फ़ंक्शन true/false अगर तत्व [class] है: http://api.jquery.com/hasClass

+0

बिंगो। अच्छा जवाब - धन्यवाद, बस उम्मीद है कि वे कक्षा का नाम नहीं बदलेंगे। :) – Chin

3

आरंभीकरण प्रयास करें

$list.listview(); 
$list.listview('refresh'); 
+0

यह क्यों कम किया गया था? विधि ठीक काम करता है। – Brad

0

मेरे लिए इस संदेश का समाधान मेरी ul तत्व को data-role="listview" जोड़ने के लिए किया गया था। मैं अपने ईवेंट हैंडलर में विधि .listview('refresh') का उपयोग कर सकता था।

-1

आप बस एक वैश्विक चर बना सकते हैं

वर is_mobile_init = झूठी; आपकी स्क्रिप्ट के शीर्ष पर

। फिर jquery मोबाइल को शामिल करने के बाद इसे सत्य पर सेट करें।

तो ताज़ा लिखने से पहले,

if (is_mobile_init) 
    $myUL.listview('refresh'); 

इस तरह से, आप सभी विभिन्न कक्षाओं का ट्रैक रखने की जरूरत नहीं है और यह सहज है

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