我使用jQuery $.ajax
調用和Knockout JS生成的頁面上有附件列表。ajax調用Knockout JS後刷新列表
我的HTML看起來像(這是剝開):
<tbody data-bind="foreach: attachments">
<tr>
<td data-bind="text: Filename" />
</tr>
</tbody>
我有得到它返回一個JSON響應附件列表功能:
$(function() {
getFormAttachments();
});
function getAttachments() {
var request = $.ajax({
type: "GET",
datatype: "json",
url: "/Attachment/GetAttachments"
});
request.done(function (response) {
ko.applyBindings(new vm(response));
});
}
我的視圖模型看起來像:
function vm(response) {
this.attachments = ko.observableArray(response);
};
有一個刷新按鈕,用戶可以點擊刷新此列表,因爲在可能已添加時間附件/刪除:
$(function() {
$("#refresh").on("click", getAttachments);
});
附件列表的初始渲染是好的,但是當我通過刷新按鈕再次調用getAttachments
單擊列表加入到(其實每個產品重複數次)。
我創建了一個的jsfiddle在這裏演示此問題:
我在做什麼錯?
Kev - 不錯的帖子。我仍然有點困惑。新淘汰賽。我在加載頁面時僅僅通過AJAX數據加載ViewModel時遇到了類似的麻煩。我相信我錯過了一個微小而嚴肅的觀點。讓我困惑的一件事是一些教程將'viewmodel'作爲一個對象(例如'var viewmodel = {something:ko.observable()}')和其他函數(函數ViewModel(){this.something = ko。observable()}') - 任何建議? – 2012-03-16 00:43:09
@ one.beat.consumer - 查看我的後續問題:http://stackoverflow.com/questions/9589419/difference-between-knockout-view-models-declared-as-object-literals-vs-functions - the回答和下面的評論應該讓事情更清楚。我建議花25美元,並觀看這個:http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=knockout-mvvm – Kev 2012-03-16 02:30:18
我會檢查你的其他問題;謝謝。我有一個複合視覺訂閱,我已經看了2-3次...他們幾乎沒有刮過表面,現在大部分都是舊的,現在2.0已經出來,他們正在使用1.2或1.3測試版... – 2012-03-16 05:48:14