Tôi đang cố gắng hiển thị thông báo DIV bằng cách sử dụng ràng buộc tùy chỉnh, đồng thời cũng điều chỉnh CSS và HTML của DIV qua 2 quan sát.KnockoutJS tùy chỉnh ràng buộc bắn nhiều lần
vấn đề là khi tôi thay đổi giá trị của 2 quan sát đó, nó cũng kích hoạt ràng buộc tùy chỉnh cũng vì một số lý do.
mẫu:
<div class="alert top-alert" data-bind="fade: topMessageShow, css: topMessageType, html: topMessage"></div>
Tuỳ chỉnh Handler:
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 Code:
MyClass.topMessageType('alert-info');
MyClass.topMessage(msg);
MyClass.topMessageShow(true);
JSFiddle:http://jsfiddle.net/UrxXF/1/
Tôi * nghĩ * vấn đề của bạn là với các ràng buộc khác đối với các quan sát. Tất cả chúng đều trở thành một phần của 'allBindingsAccessor' và thay đổi chúng * có thể * yêu cầu ràng buộc của bạn để được đánh giá lại, do đó, knockout gọi nó một lần nữa. Để khắc phục sự cố, bạn có thể kiểm tra trạng thái hiển thị và/hoặc trạng thái hoạt ảnh của phần tử trước khi chuyển vào/ra. –