Tôi có một danh sách các phần đính kèm trên một trang được tạo bằng cách sử dụng cuộc gọi JS $.ajax
và Knockout JS.Danh sách làm mới sau khi cuộc gọi ajax với Knockout JS
HTML của tôi trông giống như (điều này được rút gọn lại):
<tbody data-bind="foreach: attachments">
<tr>
<td data-bind="text: Filename" />
</tr>
</tbody>
Tôi có một chức năng mà được danh sách các file đính kèm mà được trả lại như một phản ứng JSON:
$(function() {
getFormAttachments();
});
function getAttachments() {
var request = $.ajax({
type: "GET",
datatype: "json",
url: "/Attachment/GetAttachments"
});
request.done(function (response) {
ko.applyBindings(new vm(response));
});
}
xem mô hình của tôi trông giống như:
function vm(response) {
this.attachments = ko.observableArray(response);
};
Có nút làm mới mà người dùng có thể nhấp để làm mới danh sách này bởi vì qua file đính kèm thời gian có thể đã được thêm vào/loại bỏ:
$(function() {
$("#refresh").on("click", getAttachments);
});
Hình dựng ban đầu của danh sách các file đính kèm là tốt, tuy nhiên khi tôi gọi getAttachments
một lần nữa thông qua các nút refresh nhấp danh sách sẽ được thêm vào (trong thực tế mỗi mục là nhân đôi nhiều lần).
Tôi đã tạo một jsFiddle để chứng minh vấn đề này ở đây:
Tôi đang làm gì sai?
Kev - bài đăng hay. Tôi vẫn còn một chút bối rối bởi nó. Mới để loại trực tiếp. Tôi gặp sự cố tương tự như chỉ cần tải một ViewModel với dữ liệu AJAX khi tải trang. Tôi chắc rằng tôi đang thiếu một điểm nhỏ nhưng nghiêm trọng. một điều khiến tôi bối rối là một số hướng dẫn hiển thị 'viewmodel' như một đối tượng (ví dụ' var viewmodel = {something: ko.observable()} ') và một số hàm khác như hàm (ví dụ: hàm ViewModel() {this.something = ko.quan sát()} ') - bất kỳ đề xuất nào? –
@ one.beat.consumer - xem câu hỏi tiếp theo của tôi: http://stackoverflow.com/questions/9589419/difference-between-knockout-view-models-declared-as-object-literals-vs-functions - the câu trả lời và các bình luận dưới đây sẽ làm cho mọi việc rõ ràng hơn. Tôi khuyên bạn nên chi tiêu 25 đô la và xem điều này: http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=knockout-mvvm – Kev
Tôi sẽ xem câu hỏi khác của bạn; cảm ơn bạn. Tôi có một số lượng lớn đăng ký và tôi đã xem nó 2-3 lần ... chúng hầu như không cào xước bề mặt và phần lớn trong số đó cũ là 2.0, chúng đang sử dụng 1,2 hoặc 1,3 beta ... –