Tôi đã tạo một hàm refreshJQuery()
áp dụng tất cả các hành vi của tôi trong một lần. Sau đó tôi gọi hàm này khi tôi đăng ký các quan sát trong mô hình xem của mình để cập nhật mô hình của mình. Và một lần khi tải trang.
function refreshJQuery() {
$(".draggable, .droppable, .resizable").each(function() {
var $element = $(this);
if ($element.hasClass("draggable") && !$element.data("init-draggable")) {
$element.data("init-draggable", true).draggable(dragBehavior);
}
if ($element.hasClass("droppable") && !$element.data("init-droppable")) {
$element.data("init-droppable", true).droppable(dropBehavior);
}
if ($element.hasClass("resizable") && !$element.data("init-resizable")) {
$element.data("init-resizable", true).resizable(resizeBehavior);
$(this).children().fadeTo(2000, 0);
$element.hover(function() {
$(this).children().fadeTo(200, 1);
},
function() {
$(this).children().fadeTo(750, 0);
});
}
});
};
sau đó tôi sử dụng nó như sau, mặc dù tôi đã xác định được 2 quan sát khác mà tôi cần phải gọi chức năng này từ cũng:
this.updateTime = function() {
service.updateBookingTimes(this.id(), this.startDate(), this.endDate());
refreshJQuery();
};
this.startDate.subscribe(this.updateTime, this);
this.endDate.subscribe(this.updateTime, this);
Tôi cũng đã thực hiện giải pháp @ RPNiemeyer cho cấp cơ sở JQuery đăng ký, do đó, ngoài mẫu của anh ấy cho một datepicker, tôi có mã tương tự mà áp dụng lại các thẻ $.button()
đến <a>
và một thẻ khác chuyển đổi hộp kiểm thành các công tắc kiểu iPhone.
Nguồn
2013-06-11 11:50:42
Bạn có thể giải thích kịch bản của mình thêm một chút không? Thông thường, bạn sẽ sử dụng một ràng buộc tùy chỉnh được ràng buộc chống lại một quan sát được. Khi điều đó có thể quan sát được, thì ràng buộc sẽ chạy bất kỳ mã UI UI nào là cần thiết đối với phần tử mà các ràng buộc tồn tại. Có khả năng một cách để làm những gì bạn đang yêu cầu, nhưng tôi muốn nghe thêm về trường hợp sử dụng trước khi đề xuất nó, vì nó không phải là cách bình thường để đi. –
cập nhật bài viết chính của tôi: Cho phép nói rằng tôi luôn muốn có một datepicker JQuery trên tất cả các hộp văn bản với lớp 'needsdate', thay vì thêm nó vào mỗi mô hình xem của tôi, nó sẽ là tuyệt vời nếu tôi có thể làm nó trên toàn cầu. Điều đó có hữu ích không? – RodH257
Nếu bạn không ràng buộc với một viewmodel, sau đó có lẽ bạn không cần loại trực tiếp cho việc này. –