跳到主要内容
版本:v8

ion-reorder

Reorder 是一个允许拖动项目以更改其在项目组中顺序的组件。它必须在重新排序组内使用,以提供可视化的拖放界面。

重新排序是用于拖放项目的锚点。重新排序完成后,将从重新排序组发出 ionReorderEnd 事件,并且需要调用 complete 方法。

基本用法​

重新排序最基本的示例是将其插入到项目(item)内部。默认情况下,重新排序组的功能是禁用的。可以通过将重新排序组上的 disabled 属性设置为 false 来启用它。然后可以使用重新排序图标拖放项目并对其重新排序。

控制台
控制台消息将在上方示例中调用 console.log 时显示在此处。

切换重新排序​

在某些情况下,可能需要提供切换重新排序功能的选项。这可以通过使 disabled 属性基于函数或变量具有响应性来实现。

控制台
控制台消息将在上方示例中调用 console.log 时显示在此处。

自定义重新排序图标​

重新排序组件在 iOS 上使用三条线的重新排序图标,在 Material Design 上使用两条线的图标。可以通过在 reorder 内部添加一个使用任何可用 Ionicons 的 Icon 组件来自定义此图标。

控制台
控制台消息将在上方示例中调用 console.log 时显示在此处。

Reorder 包装器​

Reorder 也可以用作项目(item)的包装器,使项目本身成为锚点。点击下方任意项目并拖动以重新排序列表。

控制台
控制台消息将在上方示例中调用 console.log 时显示在此处。

更新数据​

当在重新排序组上调用 complete 方法且不带参数时,DOM 节点将被重新排序。如果项目是从需要排序的数据数组中渲染的,这可能导致数据和 DOM 不同步。

为了在重新排序完成后对数组进行排序,应将数组作为参数传递给 complete 方法。complete 方法将对数组进行排序并返回它,以便可以重新赋值。注意,传递数组将阻止 Ionic 重新排序 DOM 节点。

在某些情况下,应用可能需要自行重新排序数组和 DOM 节点。如果需要这样做,应将 false 作为参数传递给 complete 方法。这将阻止 Ionic 重新排序重新排序组内的任何 DOM 节点。

无论采用何种方法,如果在循环中提供重新排序项目,应提供稳定的标识。这意味着在 Angular 中使用 track,在 React 和 Vue 中使用 key。

控制台
控制台消息将在上方示例中调用 console.log 时显示在此处。

事件处理​

使用 ionReorderStart 和 ionReorderEnd​

ionReorderStart 事件在用户开始重新排序手势时触发。该事件在用户点击并按住一个项目时触发,在任何移动发生之前。这对于为重新排序操作准备 UI 非常有用,例如隐藏某些元素或更新项目的视觉状态。例如,列表项目中的图标可以在拖拽时隐藏,并在重新排序完成后再次显示。

ionReorderEnd 事件在用户完成重新排序手势时触发。这发生在用户释放他们拖动的项目时,例如在触摸屏上抬起手指或松开鼠标按钮。该事件包含项目的 from 和 to 索引,以及应调用的 complete 方法来最终确定重新排序操作。from 索引始终是手势开始时项目的位置,而 to 索引是其最终位置。即使没有项目改变位置,此事件也会触发,在这种情况下 from 和 to 索引将相同。

控制台
控制台消息将在上方示例中调用 console.log 时显示在此处。

使用 ionReorderMove​

ionReorderMove 事件在用户拖拽项目期间持续触发。该事件包含项目的 from 和 to 索引。与 ionReorderEnd 不同,此事件中的 from 索引表示项目的上一个已知位置(随着项目移动而更新),而 to 索引表示其当前位置。如果自上一个事件以来项目未改变位置,则 from 和 to 索引将相同。此事件对于跟踪拖拽操作期间的位置变化非常有用。例如,可以在拖拽项目时实时更新项目的排名或编号,以保持逻辑上的升序排列。

注意

不要在 ionReorderMove 事件期间调用 complete 方法,因为它可能破坏手势。

控制台
控制台消息将在上方示例中调用 console.log 时显示在此处。

与虚拟滚动一起使用​

Reorder 需要滚动容器才能正常工作。使用虚拟滚动解决方案时,需要提供自定义滚动目标。需要禁用在内容上的滚动,并将 .ion-content-scroll-host 类添加到负责滚动的元素上。

控制台
控制台消息将在上方示例中调用 console.log 时显示在此处。

属性​

该组件没有可用的属性。

事件​

该组件没有可用的事件。

方法​

该组件没有可用的公共方法。

CSS Shadow Parts​

Name说明
iconThe icon of the reorder handle (uses ion-icon).

CSS 自定义属性​

该组件没有可用的 CSS 自定义属性。

插槽​

该组件没有可用的插槽。