Xin chào, tôi đang cố gắng thiết lập ko để cho bất kỳ trình xử lý nhấp chuột nào được gọi là một chút mã tùy chỉnh được chạy. Whats cách dễ nhất để thêm một số mã pre và post vào trình xử lý ràng buộc 'click' là gì?knockoutjs ghi đè bindinghandlers
Trả lời
Bạn có thể tạo liên kết tùy chỉnh bao bọc ràng buộc click
hoặc lưu tham chiếu đến các hàm init
và update
ban đầu của liên kết click
và thay thế thực tế.
Bạn có thể chọn thực thi một số mã trong hàm update
sẽ được kích hoạt khi giá trị mô hình được cập nhật (bằng trình xử lý sự kiện được đính kèm trong hàm init hoặc lập trình) hoặc thực thi mã của bạn như một phần của trình xử lý thực tế . Nghe có vẻ như tôi muốn bạn sau này.
bạn ràng buộc có thể trông giống như:
(function() {
var originalInit = ko.bindingHandlers.click.init,
originalUpdate = ko.bindingHandlers.click.update;
ko.bindingHandlers.click = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel, context) {
var wrappedValueAccessor = function() {
return function(data, event) {
//run some pre code
ko.bindingHandlers.click.preOnClick.call(viewModel, data, event);
valueAccessor().call(viewModel, data, event);
//run some post code
ko.bindingHandlers.click.postOnClick.call(viewModel, data, event);
};
};
originalInit(element, wrappedValueAccessor, allBindingsAccessor, viewModel, context);
},
update: originalUpdate,
preOnClick: function(data, event) {
alert("pre code for " + data.id);
},
postOnClick: function(data, event) {
alert("post code for " + data.id);
}
};
})();
tôi chia ra các mã trước/sau như vậy mà tại thời gian chạy bạn có thể ghi đè lên ko.bindingHandlers.click.preOnClick
hoặc ko.bindingHandlers.click.postOnClick
Đây là một mẫu: http://jsfiddle.net/rniemeyer/PksAn/
Nếu bạn cần chạy mã tùy chỉnh trong chức năng cập nhật, sau đó bạn có thể tách nó ra và chạy mã trước và sau của bạn ở đó và thực hiện originalUpdate
ở giữa.
- 1. C++ Ghi đè ... ghi đè?
- 2. Ghi đè hoặc ghi đè
- 3. Ghi đè phương thức ghi đè (C#)
- 4. Sự khác biệt giữa ghi đè ảo, ghi đè, ghi đè mới và bị ghi
- 5. Gọi chức năng ghi đè từ chức năng ghi đè
- 6. Ghi đè đối tượng ghi đè với các liên kết
- 7. Ghi đè đăng ký ghi đè Tạo Phương thức
- 8. Tại sao ghi đè == phải ghi đè bằng?
- 9. Ghi đè log4j.properties
- 10. Ghi đè GetHashCode
- 11. Ghi đè luồng C++
- 12. Ghi đè ToggleButton Style
- 13. Ghi đè Hibernate @transient
- 14. Ghi đè ảnh
- 15. register_shutdown_function ghi đè
- 16. Django: ghi đè get_FOO_display()
- 17. Ghi đè ít mixin
- 18. Cách ghi đè Chứa()?
- 19. Đa hình/ghi đè
- 20. Ghi đè reCAPTCHA CSS
- 21. Ghi đè tràn: ẩn
- 22. ghi đè upload_max_filesize
- 23. Javascript: Ghi đè XMLHttpRequest.open()
- 24. JavaScript: ghi đè Date.prototype.constructor
- 25. Ghi đè Rails to_param?
- 26. ghi đè Adapter.getView
- 27. django collectstatic ghi đè
- 28. URL/Subdomain ghi đè (.htaccess)
- 29. Ghi đè kiểu trong WPF
- 30. Ghi đè thuộc tính HTMLElement.classList
cảm ơn RP. Điều đó làm cho rất nhiều ý nghĩa. – Chin
RP, bạn có thể kiểm tra điều này không? Tôi cần một nhà cung cấp ràng buộc tùy chỉnh, http://stackoverflow.com/questions/14535102/binding-jagged-array-with-knockout – user960567
Đây phải là câu trả lời được chấp nhận, mã đúng và giải pháp là đúng. –