У меня есть список вложений на странице, которая создается с помощью jQuerycall и Knockout JS.Обновление списка после вызова ajax с нокаутом 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 - хороший пост. Я все еще немного смущен этим. Новое для нокаута. У меня возникают аналогичные проблемы, просто загружая ViewModel с данными AJAX при загрузке страницы. Я уверен, что мне не хватает крошечного, но серьезного момента. одна вещь, которая меня смущает, - это некоторые уроки, показывающие «viewmodel» как объект (например, «var viewmodel = {something: ko.observable()}»), а другие как функция (например, функция ViewModel() {this.something = ko.observable()} ') - любые предложения? –
@ one.beat.consumer - см. Мой последующий вопрос: http://stackoverflow.com/questions/9589419/difference-between-knockout-view-models-declared-as-object-literals-vs-functions - ответ и комментарии ниже должны сделать вещи более ясными. Я бы рекомендовал потратить 25 долларов США и посмотреть это: http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=knockout-mvvm – Kev
Я проверю ваш другой вопрос; Спасибо. У меня есть подписка на множественный доступ, и я смотрел ее 2-3 раза ... они едва поцарапали поверхность, и большая часть ее уже устарела, когда 2.0 отсутствует, они использовали 1.2 или 1.3 beta ... –