मैं नॉकआउट जेएस और चुने हुए प्लगइन (https://github.com/harvesthq/chosen) का उपयोग कर रहा हूं ताकि एक अच्छा दिखने वाला बहु चयन कर सकें।नॉकआउट जेएस और चुने गए मल्टीइलेक्ट काम नहीं कर रहे
मैंने विभिन्न तरीकों का प्रयास किया है लेकिन मैं जिस डेटा का उपयोग कर रहा हूं उसके साथ काम करने के लिए बहुविकल्पीय नहीं प्राप्त कर सकता। जब मैं मल्टीइलेक्स्ट पर क्लिक करता हूं, तो कोई मान दिखाया नहीं जाता है भले ही विकल्पों में बाध्यकारी सही डेटा है।
HTML:
<select multiple="multiple" data-bind="options: allCustomers,
selectedOptions: event().customers, optionsText: 'name',
optionsValue: 'id', chosen: true " ></select>
दृश्य मॉडल की सरलीकृत संस्करण:
function Event()
{
this.customers = ko.observableArray();
};
//for chosen plugin
ko.bindingHandlers.chosen = {
update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
$(element).chosen();
}
}
function ViewModel()
{
this.event = ko.observable(new Event());
this.allCustomers = ko.observableArray();
};
var viewModel = new ViewModel();
$.getJSON("/get_json", function(data)
{
for (var c = 0; c < data.customers.length; c++)
{
viewModel.allCustomers.push(data.customers[c]);
}
});
ko.applyBindings(viewModel);
पीएचपी:
function get_json()
{
$eventData = array(
'customers' => array(array('name' => 'Bob', 'id' => 1), array('name' => 'John', 'id' => 2)),
'moreData' => array(),
'evenMoreData' => array()
);
echo json_encode($eventData);
}
यह चुने गए स्टाइल सलेक्ट बॉक्स से पता चलता लेकिन जब मैं उस में क्लिक करें, कोई विकल्प नहीं दिखता है।
जब मैं ग्राहकों के लिए दृश्य मॉडल में एक स्थानीय जेएस सरणी बनाता हूं और सभी ग्राहकों को पास करता हूं, तो बहुआयामी सही तरीके से काम करता है (मेरा jsfiddle देखें) तो सर्वर से डेटा प्राप्त करने के लिए कुछ करना है, लेकिन मैं रहा हूं थोड़ी देर में घूर रहा है और समस्या नहीं देख सकता!
किसी भी मदद की बहुत सराहना
यदि आप 'console.log()' सरणी, यह स्थानीय परीक्षण संस्करण से मेल खाता है? आपके पास पृष्ठ पर कोई जावास्क्रिप्ट त्रुटियां नहीं हैं? – Tyrsius
सही, कोई त्रुटि नहीं और सरणी स्थानीय परीक्षण संस्करण से मेल खाती है। – peacemaker
यह हो सकता है कि एसिंक कॉल शुरू होता है, फिर बाइंडिंग लागू होती है, फिर एसिंक रिटर्न और व्यूमोडेल पर धक्का देता है। जब मैं नए ग्राहकों को सरणी में धक्का देता हूं, तो वे चयन में दिखाई नहीं दे रहे हैं, जो मुझे बताता है कि चुने गए अद्यतन प्रारंभिक बाध्यकारी के बाद काम नहीं कर रहे हैं। – Tyrsius