2013-05-16 11 views
5

मैं अपना HTML टैग सर्वर-साइड (asp.net mvc4) उत्पन्न कर रहा हूं।
मैं initSelection फ़ंक्शन में डेटा लाने के लिए AJAX कॉल से बचने के अपने छिपे हुए फ़ील्ड के मूल्य और विवरण को पूर्व-निर्धारित करना चाहता हूं।चयन 2 और दूरस्थ डेटा: पूर्व-सेट मान और पाठ से बचने वाले सर्वर राउंड-ट्रिप

मैं किसी जावास्क्रिप्ट का उपयोग कर मान सेट देखा है:

$("#select2Test").select2('data', { id: 20832, text: 'LONDON' }) 

लेकिन अभी भी यह मुझे कुछ ऐसा है जो पहले से ही एक viewmodel में सर्वर से ही स्ट्रीम की गई है प्राप्त करने के लिए अतिरिक्त कोड की आवश्यकता होगी।

मैं कुछ इस तरह ले कर आए हैं:

<input type="hidden" id="select2Test" name="select2Test" value="20832" data-option="LONDON" /> 

मैं का उपयोग किया है एक HTML5 डेटा मेरे देखने के विवरण के साथ data-option विशेषता और मैं initSelection समारोह को क्रियान्वित किया है, ताकि मैं पढ़ सकते हैं और मेरे फ़ील्ड का मान यह डेटा विशेषता:

initSelection: function (item, callback) { 
    var id = item.val(); 
    var text = item.data('option'); 
    var data = { id: id, text: text }; 
    callback(data); 
}, 

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

क्या कोई बेहतर विकल्प हैं?

+0

कॉलबैक में आप वास्तव में क्या कर रहे हैं? पृष्ठ को लोड करने के साथ-साथ उस डेटा को लोड करना बेहतर नहीं होगा? – Kenneth

+0

@ केनेथ: मैंने अपना प्रश्न अपडेट कर लिया है। वहां पूरा कोड है। पृष्ठ पहले ही लोड हो चुका है। मेरा नियंत्रक पूरे डेटासेट के साथ एक दृश्य और एक व्यूमोडेल देता है। – LeftyX

उत्तर

14

data-option एक कस्टम initSelection के साथ संयुक्त चाल चल रही थी।

$("#lookup_id").select2({ 
     minimumInputLength: 3, 
     multiple: false, 
     allowClear: true, 
     ajax: { 
      url: urlFetchCity, 
      dataType: 'json', 
      type: "POST", 
      data: function (term, page) { return { city: term }; }, 
      results: function (data, page) { 
       return { 
        return {results: data}; 
       }; 
      } 
     }, 
     initSelection: function (item, callback) { 
      var id = item.val(); 
      var text = item.data('option'); 
      var data = { id: id, text: text }; 
      callback(data); 
     }, 
     formatResult: function (item) { return ('<div>' + item.id + ' - ' + item.text + '</div>'); }, 
     formatSelection: function (item) { return (item.text); }, 
     escapeMarkup: function (m) { return m; } 
    }); 
जो लोग रुचि मेरे बनाए गए हैं के लिए

एक GitHub repository जहां एक ASP.NET MVC4 परियोजना है, जिसमें मैं एक Select2 सभी सुविधाओं के साथ टैग बनाने के लिए एक एचटीएमएल सहायक जोड़ दिया है पा सकते हैं क्लाइंट-साइड सत्यापन के लिए।

+0

धन्यवाद! मुझे इसकी ही खोज थी। –

+0

आपका स्वागत है। – LeftyX

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