本帖最后由 Joestar.Xu 于 2024-3-6 12:17 编辑
大家在尝试重写Designer的右键菜单的时候,往往会参考下面这段代码:
- function ContextMenu() {}
- ContextMenu.prototype = new GC.Spread.Sheets.ContextMenu.ContextMenu(spread);
- ContextMenu.prototype.onOpenMenu = function (
- menuData,
- itemsDataForShown,
- hitInfo,
- spread
- ) {
- // do something
- };
- spread.contextMenu = new ContextMenu();
复制代码
但是会发现出来的右键菜单和原来的右键菜单完全不一样。
这是因为Designer的右键菜单和未使用Designer的SpreadJS的右键菜单是不一样的。
以上重写方法使用的是未使用Designer的右键菜单。
那么想要使用Designer自己的右键菜单该如何写呢?
- window.onload = function () {
- let designerConfig = JSON.parse(
- JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig)
- );
- let designer = new GC.Spread.Sheets.Designer.Designer(
- "gc-designer-container",
- designerConfig
- );
- let spread = designer.getWorkbook();
- let sheet = spread.getActiveSheet();
- sheet.getCell(0, 0).value("Hello World");
- let oldOpenMenu = spread.contextMenu.onOpenMenu;
- spread.contextMenu.onOpenMenu = function (
- menuData,
- itemsDataForShown,
- hitInfo,
- spread
- ) {
- oldOpenMenu.apply(this, arguments);
- console.log(itemsDataForShown);
- };
- };
复制代码
这样一来设计器的右键菜单在重写后也不会变成未使用设计器的右键菜单了。
|
|