Gần đây tôi đã tách ViewModel thành một tệp JavaScript riêng biệt.Kích hoạt loại bỏ nhấp chuột liên kết trên applyBindings
var Report = (function($) {
var initialData = [];
var viewModel = {
reports: ko.observableArray(initialData),
preview: function(path) {
// preview report
},
otherFunctions: function() {}
};
return viewModel;
})(jQuery);
Đây là HTML và Knockout mã liên quan
<script type="text/javascript" src="path/to/report/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
ko.applyBindings(Report, document.body);
});
</script>
giao diện người dùng HTML có một nút trên đó nhấp chuột là dữ liệu ràng buộc để chức năng xem trước trong mô hình xem
<input type="button" name="Preview" id="Preview" class="btnPreview"
data-bind="click: Report.preview('url/to/report')" />
Vấn đề phương thức xem trước được gọi khi dòng sau thực hiện bằng hàm $ (document) .ready()
ko.applyBindings(Report, document.body);
Điều đó là không có người dùng nhấp vào chức năng xem trước nút Xem trước được kích hoạt. Điều gì có thể là lý do cho hành vi này? Toàn bộ nội dung đã hoạt động tốt khi tôi xem JavaScript mô hình trong chính trang HTML.
Hãy cho tôi một phút để nhận câu trả lời này. Tôi cần làm rõ: đó là vì bạn đang gọi 'Report.preview' với'() 'để thực hiện cuộc gọi thay vì trả về con trỏ hàm. Nếu không có dấu ngoặc nó sẽ hoạt động như mong đợi. – Peter