Можно ли изменить порядок вкладок Kendo Tabstrip с помощью перетаскивания?

Можно ли изменить порядок вкладок с помощью перетаскивания (см. Здесь основной режим Kendo Tabstrip)? Аналогично перетаскиванию вкладок в Excel.

1 ответ

Решение

На форуме по кендо есть такой же вопрос, который уже есть, и у него уже есть ответ, чтобы решить эту проблему, расширив виджет полоски кендо и добавив в него кендо Reorderable.

var numTabs = 1, tabs = null;

var reorderableTabStrip = kendo.ui.TabStrip.extend({
    options: {
        name: 'ReorderableTabStrip'
    },

    init: function ( element, options ) {
        kendo.ui.TabStrip.fn.init.call(this, element, options);
        this.applyReorderable();
    },

    applyReorderable: function () {
        var reorderable = this.tabGroup.data('kendoReorderable');
        if ( reorderable ) {
          reorderable.destroy();
        }

        this.tabGroup.kendoReorderable({
            group: 'tabs',
            filter:'.k-item',
            hint: function(element) {
                return element.clone().wrap('<ul class="k-tabstrip-items k-reset"/>').parent().css({opacity: 0.8});
            },
            change: $.proxy(this.onReorderableChange, this)
        });
    },

    onReorderableChange: function ( event ) {
        if ( event.newIndex < event.oldIndex ) {
            this.tabGroup.children('.k-item:eq('+event.newIndex+')').before( this.tabGroup.children('.k-item:eq('+event.oldIndex+')') );
            this.element.children('.k-content:eq('+event.newIndex+')').before( this.element.children('.k-content:eq('+event.oldIndex+')') );
        }
        else {
            this.tabGroup.children('.k-item:eq('+event.newIndex+')').after( this.tabGroup.children('.k-item:eq('+event.oldIndex+')') );
            this.element.children('.k-content:eq('+event.newIndex+')').after( this.element.children('.k-content:eq('+event.oldIndex+')') );
        }
        this._updateClasses();
    }
});
kendo.ui.plugin( reorderableTabStrip );

tabs = $('#tabs').kendoReorderableTabStrip().data('kendoReorderableTabStrip');

$('#button').click( onButtonClick );

function onButtonClick () {
    numTabs++;
    tabs.append({
        text: 'Tab ' + numTabs,
        content: 'Tab ' + numTabs + ' Content'
    });
    tabs.applyReorderable();
}

Я следую за ответом и модифицирую jsfiddle тем, кто задал вопрос, и он работает нормально.

Другие вопросы по тегам