2015-11-06 3 views
1

Контекстное меню работает только после использования ctrl + v. В противном случае он просто возвращает пустой буфер обмена, который заставляет меня думать, что требуется какой-то init или просто сфокусировать/выбрать на textarea. Я что-то упускаю? Благодарю.Контекстное меню контекстного меню не работает в первый раз

EDIT

Копирование из Ехчел и вставки в Handsontable сетки. Если я вставлю ctrl + V, все будет в порядке. После этого оба вложения с ярлыками и через контекстное меню работают так, как ожидалось. Но если после инициализации я попытаюсь использовать мою палитру меню contex, она ничего не вставляет. Пока я не вставляю ярлыки.

EDIT 2 http://jsfiddle.net/sauliuslx/ygfnR/341/ При копировании из первенствовать то вроде этого copying from excel

и вставить в handsontable с Ctrl + V, то вы будете иметь возможность вставки с контекстного меню тоже. На консоли вы увидите

enter image description here

Но тогда при перезагрузке и попытке вставить в контекстное меню не будет ничего приклеить и на консоли вы увидите

enter image description here

т.е. один элемент вместо четырех, а значение для вставки - «». И поэтому разница в том, что вы не использовали ярлык. Значит, они подготовили что-то?

attached(element) { 
    this._grid = this.initializeGrid($(element).find(".inputGrid")[0], this.options); 
} 

private initializeGrid(element, options) { 
    var config: any = { 
     data: options.data(), 
     colHeaders: options.columns.map(c => c['title'] || c.data), 
     columns: options.columns, 
     contextMenu: { 
      items: { "copy": { name: "copy Ctrl+C" }, "paste": { name: "paste Ctrl+V" }, "hsep1": "---------", "row_above": {}, "row_below": {}, "remove_row": {} } 
     }, 
     contextMenuCopyPaste: true, 
     minSpareRows: 1, 
     rowHeaders: true, 
     allowInsertColumn: false, 
     allowInvalid: false, 
     allowRemoveColumn: false, 
     manualRowMove: true, 
     autoWrapRow: true, 
     fillHandle: false, 
     stretchH: 'all', 
     height: '100%' 
    }; 

    var grid = new Handsontable(element, config); 

    var subscrRefresh = options.data.subscribe(() => { 
     grid.updateSettings({}); 
     grid.render(); 
    }); 
+0

Не могли бы вы показать нам какой-то код? Скопировать что с того места? – ZekeDroid

+0

@ZekeDroid Я добавил код инициализации. Благодарю. – Saulius

+0

Кажется, я не могу его воссоздать. Не могли бы вы разместить jsfiddle, где произошла ошибка? Вы случайно используете IE? – ZekeDroid

ответ

1

Вы, вероятно, отсутствует, являются внешние файлы ZeroClipboard. Просто загрузите их и установите. Вот прямой текст из документации:

Пожалуйста, обратите внимание, что наш Копировать/Вставить плагин Контекстное меню требует дополнительной подготовки:

  1. ZeroClipboard.js должны присутствовать на вашем сервере и включен в вашем веб-сайте script тег.

  2. ZeroClipboard.swf также должны присутствовать на вашем сервере Чтобы настроить Handsontable использовать этот плагин вам нужно добавить элемент в contextMenuCopyPaste конфигурации к вашему Hansontable экземпляра.

Он может быть установлен на:

  • true - если файл ZeroClipboard.swf находится в том же каталоге, что и ZeroClipboard.js или
  • {swfPath: [path to the swf file]}
+0

@ZakeDroid Спасибо за ваш ответ. И это кажется логичным. Я попробовал это решение на jsfiddle http://jsfiddle.net/ygfnR/345/. Поскольку ограничения swf на созданных сайтах, таких как jsfiddle, не будут работать, я пробовал это так. http://jsfiddle.net/sauliuslx/k9psq1da/117/show/ http://jsfiddle.net/sauliuslx/k9psq1da/117 И это, вероятно, должно сработать. Но это не так. Я также пробовал это на своем сайте, но мне тоже этого не удалось. – Saulius

+0

mmm это странно. на этом этапе вы должны указать его как ошибку на странице проблем github, так как это не имеет никакого смысла. Вы все еще можете ошибиться или неправильно загрузить zeroclipboard. – ZekeDroid

+0

Я вижу оба этих файла (js и swf) на chrome debugger Network. И ошибок нет. Я думаю, хром может подавлять вспышку. Но да, странно, я не жалел об этом. – Saulius

Смежные вопросы