私は、DIVのCSSとHTMLを2つの観測値で調整しながら、acustomバインディングを使用して通知DIVを表示しようとしています。KnockoutJSカスタムバインディングを複数回起動する
問題は、私はそれらの2回の観測の値を変更すると、それはまた、いくつかの理由のためだけでなくカスタムバインディングを発射するということです。
テンプレート:
<div class="alert top-alert" data-bind="fade: topMessageShow, css: topMessageType, html: topMessage"></div>
カスタムハンドラ:
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('');
});
}
}
};
トリガコード:
MyClass.topMessageType('alert-info');
MyClass.topMessage(msg);
MyClass.topMessageShow(true);
JSFiddle:http://jsfiddle.net/UrxXF/1/
I * think *あなたの問題は他の観察可能なビンディングにあります。それらはすべて 'allBindingsAccessor'の一部となり、バインドを再評価する必要がありますので、もう一度knockoutを呼び出すことができます。問題を解決するには、フェードイン/アウトする前に要素の可視性および/またはアニメーションステータスをチェックすることができます。 –