Как мне продолжить выполнение действий после завершения инициализации footable?

#javascript #jquery #promise #footable

#javascript #jquery ( jquery ) #обещаю #footable #jquery

Вопрос:

Я использую плагин запроса с именем FooTable для моей таблицы данных (http://fooplugins.github.io/FooTable /)

Ниже приведен мой код для инициализации моей таблицы данных…

 jQuery(function($){
  $('.table').footable({
      "paging": { "size": 15 },
      // "toggleColumn": "last",
      "showToggle": false,
      "columns": $.get('/footable/js/columns.json'),
      "rows": $.get('/footable/js/rows.json')
  })
})
  

Мой вопрос в том, как что-то сделать после завершения инициализации?

Я стараюсь

 jQuery(function($){
  $('.table').footable({
      "paging": { "size": 15 },
      // "toggleColumn": "last",
      "showToggle": false,
      "columns": $.get('/footable/js/columns.json'),
      "rows": $.get('/footable/js/rows.json')
  })
  .done(function(){
    alert('do something');
  })
})
  

Но это не сработало.

Ответ №1:

Вы должны использовать postinit.ft.table событие вместе с on опцией, упомянутой @Roamer-1888. (Вы можете нажать на любую опцию, чтобы увидеть небольшой пример того, как ее использовать.)

 jQuery(function($) {
    $('.table').footable({
        // your other options
        'on': {
            'postinit.ft.table': function(e, ft) {
                /*
                 * e: The jQuery.Event object for the event.
                 * ft: The instance of the plugin raising the event.
                 */
                // all initialized - do stuff here
            }
        }
    });
});
  

В качестве альтернативы второй аргумент конструктора плагина — это готовый обратный вызов, поэтому вы можете просто предоставить функцию для выполнения, как только все будет сделано.

 jQuery(function($) {
    $('.table').footable({
        // your options
    }, function(ft){
        /*
         * ft: The instance of the plugin raising the event.
         */
        // all initialized - do stuff
    });
});
  

Комментарии:

1. Я не смог заставить что-либо работать во всех этих ответах, за исключением последнего варианта здесь со вторым аргументом, для тех, кто еще хочет что-то делать после того, как все будет инициализировано, это то, что вы захотите.

2. Кроме того, есть ready.ft.table событие, полезное в этом случае.

Ответ №2:

используйте postinit.ft.table событие. См . http://fooplugins.github.io/FooTable/docs/jsdocs/FooTable.html#.event:Table%22postinit.ft.table%22

Событие postinit.ft.table вызывается после инициализации любых компонентов, но до того, как таблица будет нарисована в первый раз. Вызов preventDefault для этого события отключит начальный отрисовку таблицы.

Кроме того, это то, postdraw.ft.table что вы можете захотеть.

О том, как его использовать

Я не очень хорошо знаком с этим. Так что попробуйте. Если это не сработает, скажите мне.

 .when('postinit.ft.table', function(e, ft){
    //ok
})
  

Комментарии:

1. Как мне использовать это событие?

2. ответ @aBloomer изменен. посмотрите на это

3. Очень признателен.

Ответ №3:

За документацией FooTable сложно следить, поскольку она не перегружена примерами.

Я думаю, что предложение @turle использовать событие «postinit.ft.table» является хорошим, однако я не вижу, что .when('postinit.ft.table', function(e, ft){ /* do something */ }) это правильный синтаксис.

Насколько я могу судить отсюда, обработчики событий подключаются с помощью опции «вкл.».

Попробуйте :

 jQuery(function($) {
    $('.table').footable({
        'paging': { 'size': 15 },
        // "toggleColumn': "last",
        'showToggle': false,
        'columns': $.get('/footable/js/columns.json'),
        'rows': $.get('/footable/js/rows.json'),
        'on': {
            'postinit.ft.table': function(e, ft) {
                /*
                 * e: The jQuery.Event object for the event.
                 * ft: The instance of the plugin raising the event.
                 */
                // all initialized - do stuff here
            }
        }
    });
});
  

Ответ №4:

Просто попробуйте ‘ready.ft.table’

Что-то вроде

 jQuery(function($){
    $('.table').footable({
    "on": {
        "ready.ft.table": function(e, ft){
            // bind to the plugin initialize event to do something
        }
    }
   });
});