Handsontable上下文菜单粘贴第一次无法正常工作

时间:2015-11-06 22:59:23

标签: javascript handsontable

上下文菜单仅在使用ctrl + v后才能工作。否则它只返回空剪贴板,这让我觉得需要一些初始化,或者只需在textarea上进行焦点/选择。我错过了什么吗?感谢。

修改

从excel文件复制并粘贴到Handsontable网格。如果我将使用ctrl + V粘贴一切正常。之后,使用快捷方式粘贴和通过上下文菜单按预期工作。但是如果在初始化之后我将尝试使用我的上下文菜单粘贴它将不会粘贴任何内容。直到我粘贴快捷方式。

编辑2 http://jsfiddle.net/sauliuslx/ygfnR/341/ 如果你从excel smth那样复制 copying from excel

并使用ctrl + v粘贴到handsontable,然后您也可以粘贴上下文菜单。在控制台上你会看到

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();
    });

1 个答案:

答案 0 :(得分:1)

您可能遗失的是ZeroClipboard的外部文件。只需下载并设置它们。这是来自文档的直接文本:

  

请注意,我们的复制/粘贴上下文菜单插件需要一些额外的准备工作:

     
      
  1. ZeroClipboard.js必须出现在您的服务器上,并包含在您网站的script代码中。

  2.   
  3. ZeroClipboard.swf也必须出现在您的服务器上   要配置Handsontable以使用此插件,您需要向Hansontable实例添加contextMenuCopyPaste配置项。

  4.         

    可以设置为:

         
        
    • true - 如果ZeroClipboard.swf文件与ZeroClipboard.js放在同一目录中,或
    •   
    • {swfPath: [path to the swf file]}
    •