Как добавить обратный вызов jquery treeview при загрузке данных - PullRequest
1 голос
/ 05 февраля 2011

Я использую плагин jquery treeview .Есть ли способ добавить функцию обратного вызова, которая будет вызываться после загрузки данных?

  $("#tree").treeview({
      url: "/loadtree",
      callback: my_function // this is what i wanted to do
  });

Ответы [ 2 ]

1 голос
/ 18 января 2012

Добавление обратного вызова было действительно полезно - Спасибо.

Я обнаружил, что вы можете изменить порядок внутри исходного кода асинхронного просмотра дерева.

    $.ajax($.extend(true, {
    url: settings.url,
    dataType: "json",
    data: {
        root: root
    },
    success: function(response) {
        child.empty();
        $.each(response, createNode, [child]);
        $(container).treeview({add: child});

            if(settings.dataLoaded) 
        settings.dataLoaded();

    }
}, settings.ajax));

Таким образом, асинхронный скрипт может завершить изменение DOM. Обратите внимание, что settings.dataLoaded находится в конце sucess: function.

1 голос
/ 05 февраля 2011

В асинхронном древовидном представлении обратного вызова нет, но добавить свой собственный достаточно просто.Материал AJAX находится здесь:

https://github.com/jzaefferer/jquery-treeview/blob/master/jquery.treeview.async.js#L42

$.ajax($.extend(true, {
    url: settings.url,
    dataType: "json",
    data: {
        root: root
    },
    success: function(response) {
        child.empty();
        $.each(response, createNode, [child]);
        $(container).treeview({add: child});
    }
}, settings.ajax));

Вы можете добавить обратный вызов, добавив settings.dataLoaded и изменив приведенный выше фрагмент на что-то вроде этого:

$.ajax($.extend(true, {
    url: settings.url,
    dataType: "json",
    data: {
        root: root
    },
    success: function(response) {
        if(settings.dataLoaded) 
            settings.dataLoaded();
        child.empty();
        $.each(response, createNode, [child]);
        $(container).treeview({add: child});
    }
}, settings.ajax));

Я только что добавил две строки под success:.Тогда вы бы настроили древовидную структуру следующим образом:

$("#tree").treeview({
    url: "/loadtree",
    dataLoaded: my_function
});

Я не пробовал это, но оно должно работать, и если нет, то это будет хорошей отправной точкой для его начала.

У вас есть доступ к исходному коду, нет веской причины не использовать его.И нет веской причины не добавлять поддержку обратного вызова самостоятельно и отправлять Jörn Zaefferer патч для добавления этой функциональности в основной репозиторий.

...