Sto provando a mostrare un DIV di notifica utilizzando l'associazione personalizzata, mentre anche regolare il CSS e HTML di DIV tramite 2 osservabili.KnockoutJS associazione personalizzata sparando più volte
Il problema è che quando cambio il valore di quei 2 osservabili, spara anche il legame così per qualche motivo su ordinazione.
Template:
<div class="alert top-alert" data-bind="fade: topMessageShow, css: topMessageType, html: topMessage"></div>
gestore personalizzato:
ko.bindingHandlers.fade = {
update: function resolveFade(element, valueAccessor, allBindingsAccessor) {
if (ko.utils.unwrapObservable(valueAccessor())) {
$(element).hide().delay(300).fadeIn('slow');
} else {
// fade out the notification and reset it
$(element).fadeOut('slow', function() {
// reset those 2 observables that set class and HTML of the notification DIV
MyClass.topMessageType('');
MyClass.topMessage('');
});
}
}
};
Triggering Codice:
MyClass.topMessageType('alert-info');
MyClass.topMessage(msg);
MyClass.topMessageShow(true);
JSFiddle:http://jsfiddle.net/UrxXF/1/
I * think * il tuo problema è con gli altri binding agli osservabili. Entrambe diventano parte di 'allBindingsAccessor' e cambiandole * potrebbe * richiedere che l'associazione venga rivalutata, quindi knockout la chiama di nuovo. Per risolvere il problema, è possibile controllare la visibilità e/o lo stato dell'animazione dell'elemento prima di dissolvenza in entrata/uscita. –