J'essaie d'afficher une notification DIV en utilisant la liaison personnalisée, tout en ajustant CSS et HTML DIV par 2 observables.KnockoutJS reliure personnalisée tir plusieurs fois
Le problème est que lorsque je change la valeur de ces 2 observables, il déclenche également la liaison personnalisée aussi bien pour une raison quelconque.
Modèle:
<div class="alert top-alert" data-bind="fade: topMessageShow, css: topMessageType, html: topMessage"></div>
Gestionnaire personnalisé:
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('');
});
}
}
};
code Déclencher:
MyClass.topMessageType('alert-info');
MyClass.topMessage(msg);
MyClass.topMessageShow(true);
jsFiddle:http://jsfiddle.net/UrxXF/1/
Je * pense * que votre problème est avec les autres liaisons aux observables. Ils font tous partie du 'allBindingsAccessor' et les changer * pourrait * exiger que votre liaison soit réévaluée, ainsi knockout l'appelle à nouveau. Pour résoudre le problème, vous pouvez vérifier l'état de la visibilité et/ou de l'animation de l'élément avant de passer à l'état actif ou inactif. –