2011-04-07 19 views
15

के साथ एक नॉकआउटजेएस टेम्पलेट बाइंडिंग का उपयोग करके मैं एक jQuery UI संवाद का उपयोग करने के बारे में कैसे पुष्टि करूंगा यह पुष्टि करने के लिए कि क्या वे KnockoutJS टेम्पलेट के भीतर किसी सूची से पंक्ति को हटाना चाहते हैं?jQuery UI पुष्टिकरण संवाद

जैसा कि मैंने इसे देखा, नॉकआउट डेमो एक टेम्पलेट दिखाता है जो प्रत्येक पंक्ति को ग्रिड में प्रस्तुत करता है। डिलीट बटन हटाने के लिए पंक्ति के ऑब्जेक्ट में viewModel.remove() फ़ंक्शन को कॉल करता है। remove() फ़ंक्शन के अंदर, this.Gifts.Remove() को फ़ंक्शन में पैरामीटर के रूप में पारित डेटा के साथ बुलाया जाता है।

मेरी समस्या यह है कि मैं एक jQuery संवाद प्रदर्शित करना चाहता हूं ताकि यह पुष्टि हो सके कि कोई पंक्ति हटा दी जानी चाहिए या नहीं। JQuery संवाद सेटअप फ़ंक्शन के आधार पर काम करता है जो पहले से डायलॉग और इसके डिलीट फ़ंक्शन को सेट करता है।

जब मैं टेम्पलेट में अपने डिलीट लिंक पर क्लिक करता हूं, तो यह संवाद ठीक खुलता है, लेकिन मैं टेम्पलेट डेटा को डायलॉग डिलीट फ़ंक्शन में कैसे पास करूं, क्योंकि अब यह टेम्पलेट तंत्र से पूरी तरह से decoupled है?

उत्तर

20

मुझे लगता है कि संवाद jQuery UI से है। यदि हां, तो फिर आप अपने निकालें कुछ इस प्रकार दिखाई देगा:

removeItem: function(item) { 
    $("#dialog-confirm").dialog({ 
     resizable: false, 
     height:140, 
     modal: true, 
     buttons: { 
      "Delete item": function() { 
       $(this).dialog("close"); 
       viewModel.items.remove(item); 
      }, 
      Cancel: function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
} 

तो, "आइटम हटाएं" बटन संवाद बंद करें और भी अपने observableArray से अपने आइटम को निकालने होगा।

यहाँ नमूना कार्य करना: http://jsfiddle.net/rniemeyer/CLxsV/

संपादित करें: यहाँ बाइंडिंग का उपयोग कर बेहतर नमूना: http://jsfiddle.net/rniemeyer/WpnTU/

+0

बिल्कुल सही! सहायता के लिए धन्यवाद। – jaffa

+0

क्या यह जांचने का कोई तरीका है कि संवाद विधि को सही पैरामीटर के साथ बुलाया गया था? यह मॉडल और jQuery UI पर विधियों के बीच बातचीत का परीक्षण करने में सक्षम होना होगा। उदाहरण के लिए, यह सुनिश्चित करने के लिए कि बटन सही तरीके से बंधे थे, वह मोडल सत्य था, आदि। क्या ऐसा करने का कोई अच्छा तरीका है? धन्यवाद –

+0

मैं इस नमूने में बेहतर कस्टम नॉकआउट बाध्यकारी का उपयोग करने का सुझाव दूंगा: http://stackoverflow.com/questions/7436160/mvc-knockout-js-inside-jquery-dialog – VikciaR

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