KnockoutJs - как использовать таблицы данных с существующей связанной таблицей - PullRequest
2 голосов
/ 23 марта 2012

У меня есть простая таблица HTML, которая связана с использованием knockoutJS.Однако я добавил пользовательскую привязку, которая применяет подключаемый модуль jquery datatable к таблице.

Когда я щелкаю заголовки, таблица исчезает.Есть идеи, как заставить его работать с knockoutJS?

Ответы [ 2 ]

3 голосов
/ 22 сентября 2015

Это способ сделать это ... Я сделал jsfiddle, показывающий это:

Вот специальное решение для привязки для данных jQuery.JSFiddle w / jqueryUI

3 голосов
/ 23 марта 2012

На самом деле нет необходимости использовать knockoutJs для выполнения привязки dataTable. Поскольку knockoutJs уже связывает таблицу HTML с моделью, просто используйте следующее:

$(function() {
        var dtOptions = {
                "bPaginate": false,
                "bLengthChange": false,
                "bFilter": false,
                "bInfo": false,
                bJQueryUI: true              
        }

        var dt = $("#leadsTable").dataTable(dtOptions);

        $("#searchButton").click(function() {
           //... set url with search terms...

           $.get(url, function (data) {
                // destroy existing table
                dt.fnDestroy();

                ko.mapping.fromJS(data, vm.model);

                // re-created AFTER ko mapping
                dt.dataTable(dtOptions);                    
           });
       })
});

var serialisedModel = @Html.Raw(new JavaScriptSerializer().Serialize(Model));

var vm = {      
    data: ko.toJSON(serialisedModel),
}

ko.applyBindings(vm);

Важнейшей частью является уничтожение существующей таблицы данных до сопоставления и повторное создание после сопоставления. Мне пришлось сохранить ссылку на исходную таблицу данных для последующего уничтожения ...

...