SuperAPI AI 工具集

syncfusion-javascript-context-menu

前端与建站

查看项目

更新于 10-16 02:02

技能介绍

用途

Syncfusion JavaScript ContextMenu 是一个图形用户界面组件,在用户执行右键点击或触摸长按操作时出现,用于在 Web 应用中提供上下文相关的操作菜单。该技能文档面向使用 Syncfusion TypeScript ContextMenu 组件的开发者,帮助实现右键菜单、嵌套菜单和动态菜单内容。

主要能力

  • 嵌套/多级菜单:创建层级化的菜单结构。
  • 动态菜单项管理:在运行时添加、移除、启用或禁用菜单项。
  • 丰富的样式与模板:支持自定义 CSS、图标和 HTML 模板。
  • 事件处理:提供完整生命周期事件,如 beforeOpen、onOpen、onClose、select 等。
  • 动画:可配置打开/关闭动画,支持多种效果。
  • 数据绑定:从数据源填充菜单。
  • 滚动:通过 HScroll/VScroll 为大型菜单提供自动滚动。
  • 无障碍:符合 WCAG,支持键盘导航和 ARIA。
  • RTL 支持:面向国际应用的从右到左布局。

使用方式

文档按主题组织,并给出对应的参考文件:

  • 入门:references/getting-started.md,涵盖安装依赖、配置开发环境、向项目添加 ContextMenu、使用 HTML 和 TypeScript 进行基本组件初始化、带分隔符的首个可运行示例,以及运行和测试应用。
  • 菜单结构与模板:references/menu-structure.md,涵盖基于模板的菜单结构、多级和嵌套菜单、分隔符与项目分组、FieldSettings 数据映射配置、自定义项目结构模式。
  • 菜单项管理:references/menu-items.md,涵盖动态添加或移除菜单项、以编程方式启用和禁用项目、使用 insertBefore() 和 insertAfter() 方法、管理项目状态和可见性、批量项目操作。
  • 交互与事件:references/interactions.md,涵盖以编程方式打开和关闭 ContextMenu、处理生命周期事件(beforeOpen、onOpen、onClose、beforeClose)、响应项目选择(select 事件)、集成由菜单点击触发的对话框、配置动画效果和时序、管理菜单位置和悬停延迟。
  • 样式与外观:references/styling.md,涵盖应用 CSS 样式和自定义主题、使用 iconCss 为菜单项添加图标、通过 href 实现 URL 导航、启用从右到左(RTL)布局、应用自定义 CSS 类、使用下划线字符格式化文本。
  • 数据绑定:references/data-binding.md,涵盖从数据源填充菜单、绑定到 JSON 数组和集合、从服务器动态更新菜单项、使用 FieldSettings 映射数据字段、实时更新菜单内容。
  • 高级功能:references/advanced-features.md,涵盖使用 HScroll/VScroll 实现可滚动菜单、配置 MenuOpenType(Auto、Hover、Click)、应用元素过滤器以选择性触发菜单、启用/禁用 HTML 清理以保障安全、配置持久化和区域设置、无障碍功能和 ARIA 属性。
  • API 参考:references/api-reference.md,涵盖约 40 个核心属性的完整文档、MenuItem 结构和配置、可用方法(open、close、enableItems、removeItems、hideItems 等)、事件接口和事件数据结构、动画效果和菜单打开类型、类型定义和枚举。

快速开始示例:

HTML:

<div> <div id="contextmenutarget" style="border: 1px solid #ccc; padding: 20px; width: 300px; height: 200px;"> Right-click here to open the context menu </div> <ul id="contextmenu"></ul> </div>

TypeScript:

import { ContextMenu } from '@syncfusion/ej2-navigations';

// Define menu items const menuItems = [ { text: 'Cut' }, { text: 'Copy' }, { text: 'Paste' }, { separator: true }, { text: 'Link' }, { text: 'Share' } ];

// Initialize ContextMenu const contextMenu = new ContextMenu({ items: menuItems, target: '#contextmenutarget' });

contextMenu.appendTo('#contextmenu');

常见模式:

模式 1:嵌套菜单结构

const menuItems = [ { text: 'Edit', items: [ { text: 'Cut' }, { text: 'Copy' }, { text: 'Paste' } ] }, { text: 'View', items: [ { text: 'Zoom In' }, { text: 'Zoom Out' } ] } ];

const contextMenu = new ContextMenu({ items: menuItems, target: '#target' });

模式 2:处理菜单项选择

const contextMenu = new ContextMenu({ items: menuItems, target: '#target', select: (args) => { console.log('Selected: ' + args.item.text); // Perform action based on selected item } });

模式 3:动态添加项目

// Add new items after initialization const newItems = [{ text: 'New Option' }]; contextMenu.insertAfter(newItems, 'Edit');

模式 4:动画配置

const contextMenu = new ContextMenu({ items: menuItems, target: '#target', animationSettings: { duration: 400, easing: 'ease', effect: 'SlideDown' // SlideDown, ZoomIn, FadeIn, etc. } });

模式 5:图标与导航

const menuItems = [ { text: 'Edit', iconCss: 'e-icons e-edit' }, { text: 'Delete', iconCss: 'e-icons e-delete' }, { text: 'External Link', url: 'url' } ];

关键属性:

  • items(MenuItemModel[]):菜单项配置。
  • target(string):触发元素的 CSS 选择器。
  • animationSettings(MenuAnimationSettingsModel):动画行为。
  • cssClass(string):自定义 CSS 类。
  • enableScrolling(boolean):为长菜单启用滚动条。
  • enableRtl(boolean):从右到左布局支持。
  • showItemOnClick(boolean):子菜单在点击时打开(而非悬停)。
  • hoverDelay(number):子菜单出现前的延迟(毫秒)。
  • filter(string):用于过滤目标元素的 CSS 选择器。
  • itemTemplate(string/Function):菜单项的自定义模板。

适用场景

  • 文件操作:对文件/文件夹执行剪切、复制、粘贴、删除。
  • 编辑器菜单:文本编辑器中的格式化选项。
  • 网格行操作:对表格/网格行的操作。
  • 应用菜单:通用应用上下文菜单。
  • 嵌套操作:多级操作(如编辑 → 格式)。
  • 动态内容:从服务器加载菜单项。
  • 自定义样式:与应用设计匹配的主题化上下文菜单。
  • 无障碍:键盘导航和屏幕阅读器支持。

限制

资料未提供关于收费、价格、平台兼容性、性能指标或具体使用步骤之外的限制说明,相关内容暂未提供。