Использование jquery.tablesorter с сгенерированной таблицей jquery.tmpl - PullRequest
3 голосов
/ 08 апреля 2011

У меня есть таблица, которая динамически генерируется с помощью jquery.tmpl из viewModel KnockoutJS observableArray.После первоначального связывания я также применяю tableorter к идентификатору таблицы, чтобы выполнить сортировку.

Как я и ожидал, всякий раз, когда элемент был удален (или добавлен) в viewModel, таблица обновляется, но после обновления таблица сортировки не работает, если я снова не вызову $("#id").tablesorter();.

* 1005.* Есть ли здесь лучший способ использования обоих jQuery.tablesorter с KnockoutJS?Есть ли лучший плагин для использования здесь?Очевидно, что то, что я делаю, работает, но мне интересно, упускаю ли я что-то простое, что было бы более эффективным.

1 Ответ

5 голосов
/ 08 апреля 2011

Вместо вызова $ ("# id"). Tablesorter () каждый раз, вы можете вызвать $ ("# id"). Trigger ("update") .

Похоже, что это предпочтительный способ сообщить табличному сортировщику, что есть новые данные для рассмотрения, основанные на документах .

Если вы хотите немного поработать стаким образом, вы можете создать пользовательскую привязку для вашей таблицы, которая будет вызываться каждый раз, когда ваш observableArray изменится.

будет выглядеть так:

ko.bindingHandlers.triggerUpdate = {
    update: function (element, valueAccessor) {
        ko.utils.unwrapObservable(valueAccessor()); //need to just access the observable to create the subscription
        $(element).trigger("update");
    }
}

Затем вы поместите это на вашу таблицукак:

<table id="mytable" data-bind="triggerUpdate: items">
...