पर फायरिंग नहीं है मेरे पास एक कस्टम नॉकआउट बाध्यकारी है जो टॉगल स्विच को 'ऑन' या 'ऑफ' स्थिति में एनिमेट करता है। मेरी समस्या यह है कि अद्यतन फ़ंक्शन केवल init के तुरंत बाद आग लग जाता है और जब अवलोकन योग्य मान बदलता है। कोई विचार क्या मैं गलत कर रहा हूँ?नॉकआउट कस्टम बाइंडिंग अपडेट फ़ंक्शन
ko.bindingHandlers.toggleSwitch = {
init: function (element, valueAccessor) {
var valueUnwrapped = ko.utils.unwrapObservable(valueAccessor());
var value = valueUnwrapped.value;
var target = $(element);
var disabled = valueAccessor().disabled;
var id = 'ul' + (++ko.bindingHandlers['uniqueId'].currentIndex);
var html = ['<div class="switch-mask"><ul id="' + id + '"', 'class="on-off-switch">', '<li class="on-switch">' + valueAccessor().on + '</li>', '<li class="on-off-knob"></li>', '<li class="off-switch">' + valueAccessor().off + '</li>', '</ul></div>'].join('');
target.replaceWith(html);
var mainTarget = $('#' + id);
if (value()) {
mainTarget.children('.on-switch').animate({ 'margin-left': '0px' });
mainTarget.children('.on-off-knob').animate({ 'margin-left': '0px' });
}
else {
mainTarget.children('.on-switch').animate({ 'margin-left': '-28px' });
mainTarget.children('.on-off-knob').animate({ 'margin-left': '-1px' });
};
if (!disabled) {
mainTarget.on('click', function() {
//this fires every time the toggle switch is clicked.
var valueUnwrapped = ko.utils.unwrapObservable(valueAccessor());
if (value()) {
mainTarget.children('.on-switch').animate({ 'margin-left': '0px' });
mainTarget.children('.on-off-knob').animate({ 'margin-left': '0px' });
value(false);
} else {
mainTarget.children('.on-switch').animate({ 'margin-left': '-28px' });
mainTarget.children('.on-off-knob').animate({ 'margin-left': '-1px' });
value(true);
}
value.valueHasMutated();
});
}
},
update: function (element, valueAccessor) {
var value = valueAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(valueAccessor());
console.log('update called');
}
};
ko.virtualElements.allowedBindings.toggleSwitch = true;
यह मेरा बाध्यकारी है:
<!-- ko toggleSwitch:{value:data.model.Settings.HtmlEmail,on:'On',off:'Off'}-->
<!-- /ko -->
लगता है जैसे मैं कर रहा हूँ: मैं कैसे अतीत में इस कार्य किया है उसे अद्यतन समारोह init समारोह में में नमूदार पर कस्टम बाध्यकारी और सिर्फ सेट एक सदस्यता पर छोड़, इस तरह है मेरे अगले बच्चे XDumaine नामकरण। आपकी मदद के लिए बहुत बहुत धन्यवाद। – SquidScareMe