समस्या बंधन और jQuery में Select2 '' के साथ नॉकआउट:संवाद
Select2 jQuery प्लगइन है जब एक jQuery संवाद एक तत्व नॉकआउट with
डेटा बाइंडिंग का उपयोग करता है के तहत नेस्ट पर इस्तेमाल किया काम नहीं करता। with
बाध्यकारी निकालें और चयन 2 ठीक काम करता है। यदि with
घोंसला वाली संपत्ति से जुड़ा हुआ है तो यह काम करना बंद कर देता है।
पृष्ठभूमि:
तो मैं $$ एक jQuery संवाद फार्म पर काम करने के लिए .... अनुकरणीय के बारे में बात लौकिक गलत पेड़ ing Select2 प्राप्त करने की कोशिश में 3 घंटे की सबसे अच्छी बात के लिए लड़ाई लड़ी है चाहिए , मैंने सोचा कि यह पूरी तरह से jQuery संवाद और चयन 2 था। यह शायद _allowInteraction
फिक्स के साथ बहुत शुरुआत से काम करता है। जब तक मैंने समस्या को सरल चरणों तक नहीं तोड़ दिया और तह कारण खुद को प्रकट करना शुरू कर दिया। समस्या with
बाध्यकारी के साथ है।
अस्वीकरण
क्षमा याचना मैं एक मूर्खतापूर्ण कंपनी है कि ब्लॉक jsFiddle के लिए काम के रूप में। इसके अलावा मैंने चित्रण उद्देश्यों के लिए अपना कार्यान्वयन तोड़ दिया है क्योंकि वास्तविक मॉडल काफी बड़ा है।
// models
function Department() {
this.name = ko.observable('dept1');
this.selectedTeam = ko.observable(new Team());
}
function Team() {
this.name = ko.observable('team1');
}
function MainModel() {
this.department = new Department();
this.showTeam = function() {
$('#addTeamDialog').dialog('open');
};
}
// setup
ko.applyBindings(new MainModel());
\t
$('#addTeamDialog').dialog({
// fix allow select2 to work on the jq dialog
_allowInteraction: function (event) {
return !!$(event.target).is(".select2-input") || this._super(event);
} \t \t
});
\t
$('#someList').select2({
data: [
{ id: 0, text: 'enhancement' },
{ id: 1, text: 'bug' },
{ id: 2, text: 'duplicate' },
{ id: 3, text: 'invalid' },
{ id: 4, text: 'wontfix' }
]
});
<link href="http://code.jquery.com/ui/1.11.4/themes/ui-lightness/jquery-ui.css" rel="stylesheet"/>
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.full.min.js"></script>
<button data-bind="click: showTeam">Add Team</button>
<div id="addTeamDialog">
<fieldset data-bind="with: department">
<div class="lite-dialog-field">
<div class="label">
<span data-bind="text: name"></span>
</div>
<div class="field">
<input type="hidden" id="someList" />
</div>
</div>
</fieldset>
</div>
fieldset
पर data-bind
और Select2 निकाला जा रहा है ठीक काम करता है।
data-bind
fieldset
पर department
पर सेट 2 का चयन ठीक है।
data-bind
fieldset
पर department.selectedTeam
चयन 2 काम नहीं कर रहा है।
कोड द्वारा पोस्ट की गई काफी अपने परिदृश्य पुन: पेश करने के लिए पर्याप्त होना करने के लिए (जैसे कोई 'select's या किसी भी तरह के संबंधित कोड?) प्रतीत नहीं होता। – Jeroen
क्या देता है? आईडी कुछ सूची के साथ मार्कअप पर छिपी हुई इनपुट चयन 2 नियंत्रण के लिए कंटेनर है। सेटअप अनुभाग में आप देख सकते हैं कि मैं $ ('# someList') कहता हूं। Select2 ({..})। यह इस तत्व को select2 सूची में परिवर्तित करता है। क्या मैं कुछ भूल रहा हूँ? हर्ष डाउनवोट .... –
मैं सही खड़ा हूं। क्षमा याचना। - मैंने आपके प्रश्न को थोड़ा सा बदल दिया है, अन्यथा सिस्टम मुझे मेरे वोट को पूर्ववत नहीं करने देगा। के रूप में मैं अब देखना मैं काफी प्रयास में डाल नहीं था मुद्दा repro (हालांकि मैं अभी भी% नहीं 100 ऐसा करने के लिए कैसे यकीन है कि पोस्ट कोड का उपयोग करने मैं भी मेरे करीबी वोट मुकर गया है, लेकिन दूसरों बातें स्पष्ट देख सकते हैं और मदद करने में सक्षम हो)। – Jeroen