2012-05-01 8 views
6

मैं एक एप्लीकेशन विकसित करने के लिए jQuery मोबाइल (जेक्यूएम) और Knockout.js (को) का उपयोग कर रहा हूँ। इस एप्लिकेशन में, मुझे लगातार परिवर्तनीय वेब सेवा द्वारा परिभाषित बटनों की एक चर संख्या उत्पन्न करने की आवश्यकता है।मैं Knockout.js का उपयोग कर jQuery मोबाइल बटन का गतिशील सेट कैसे बांधूं?

तो, मेरी मार्कअप में, मेरे पास है:

<div id="answerPage-buttons" data-bind="foreach: buttonsLabels"> 
    <button data-role="button" data-inline="true" data-theme="b" data-bind="text: text, click: $root.submitAnswer" /> 
</div> 

buttonLabels वेब सेवा से लौटे संक्षिप्त स्ट्रिंग की एक सूची है। इसे परिभाषित किया गया है:

self.buttonLabels = ko.observableArray(); 

बटन सभी "जेक्यूएम स्टाइल" नहीं होने पर यह ठीक काम करता है। हालांकि, जब मैं उनका उपयोग कर शैली:

$("#answerPage-buttons").trigger("create"); 

अद्यतन के दौरान समस्या उत्पन्न होती है।

समस्या यह प्रतीत होती है कि जेक्यूएम एक अच्छा (मोबाइल भाई के साथ) बटन को सभी अच्छे और मोबाइल दिखने के लिए लपेटता है। हालांकि, जब को बाइंडिंग के माध्यम से अपडेट लागू होते हैं, तो यह केवल टैग को हटा देता है, आसपास के सामान को छोड़ देता है, और नए बटन टैग जोड़ता है - जिसे बाद में जेक्यूएम ट्रिगर कॉल द्वारा स्टाइल किया जाता है।

तो, मैं बटनों की एक सतत बढ़ती सूची के साथ समाप्त होता हूं - केवल अंतिम सेट परिचालन होने के साथ ही (जैसा कि पिछले लोगों को उनके बटन तत्व को हटाने से गुम हो जाता है, लेकिन सभी स्टाइल बनी हुई हैं)।

मैं इसके समाधान के लिए प्रबंधित किया है, मुझे लगता है, तो निम्न कॉल के तुरंत बाद नमूदार अद्यतन किया जाता है रखकर:

$("#answerPage-buttons div.ui-btn").remove(); 

लेकिन, मेरा लग रहा है वहाँ शायद एक बेहतर तरीका है कि है। है?

+2

आप मैन्युअल रूप से बटन बना और प्रबंधित कर सकते हैं। मैं अक्सर यह कर रहा हूं, जब बटन को अक्सर अपडेट करना होता है। फिर मैं जो भी तत्व चाहता हूं उसे अपडेट करें (आइकन, href, टेक्स्ट) और "खोल" को छोड़ दें। अगर आप "खोल" चाहते हैं तो मुझे बताएं? – frequent

उत्तर

3

मुझे एक समाधान मिला।

यदि मैं एक div के साथ बटन को घेरता हूं, तो ऐसा लगता है - उदाहरण के लिए

<div id="answerPage-buttons" data-bind="foreach: buttonsLabels"> 
    <div> 
     <button data-role="button" data-inline="true" data-theme="b" data-bind="text: text, click: $root.submitAnswer" /> 
    </div> 
</div> 

मैं इस अनुमान लगा रहा हूँ क्योंकि मार्कअप jQM से जोड़ा रहता है "अंदर" मार्कअप ko ने दोहराया है। Div के बिना, जेक्यूएम बटन टैग को लपेटता है, जो कि टैग का तत्काल बच्चा था जिसमें को फोरैच बाध्यकारी होता है।

+0

वास्तव में बहुत बहुत धन्यवाद, बहुत !!!! तुमने मुझे एक दिन बचाया! –

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