事件

ThingJS 拓扑组件中内置了部分常用事件,如鼠标点击、选中变化等。用户可以监听这些事件,在事件回调中进行相应的业务逻辑处理。

绑定事件

全局绑定事件和局部绑定事件

用户的操作以及场景的变化,都会触发相应的事件。你可以监听这些事件,然后在回调方法中做相应的处理,通过 on() 方法绑定事件。

全局绑定:通过 graph.on() 绑定事件,可在全局下添加条件指定针对哪些对象绑定该事件,条件规则同于 query 使用的条件。

// 绑定事件
graph.on('click', function(ev) {
  console.log('you click!')
})

注意事项 在全局绑定后,新创建的符合条件对象也可以生效。

局部绑定:针对一个对象,或者 query 的查询结果(Selector),通过 on 接口绑定事件,我们叫局部绑定。同全局绑定,事件中可以加条件,表示这个事件绑定是针对集合中的所有对象的。

obj.on('click', function(ev) {
  console.log(ev.object.name)
})

应用示例

在下面的章节中,将详细介绍事件的常用方法

绑定事件并添加条件

事件添加了条件,只有在符合该条件的对象上 click 才会触发,无论是已经存在的对象,还是后面新创建的对象都会生效。

// 监听画布中 id 为 node1 的对象点击
graph.on('click', '#node1', function(ev) {
  console.log('you click ' + ev.object.id)
})

注册单次事件

如果需要一个事件只执行一次,就需要卸载掉,你可以使用 once 这个接口代替 on,参数和 on 是一样的。

// 监听画布中 id 为 node1 的对象的第一次点击
graph.once('click', '#node1', function(ev) {
  console.log('you click ' + ev.object.id)
})

卸载事件

当我们想卸载一个事件的时候使用 off() 方法。

graph.on('click', function(ev) {
  console.log('you click!')
})

// 卸载
graph.off('click')

自定义事件

ThingJS 拓扑组件中支持自定义事件的监听和触发,外部注册还是使用 on,在需要触发的地方我们使用 trigger 接口来对外触发事件。

// 自定义事件监听和触发
graph.on('customevent', function(ev) { 
  console.log(ev.level)
})
graph.trigger('customevent', { level: 1 })

参考信息

常用事件类型

名称 默认 说明
Load load 场景加载完成时触发
Click click 通知鼠标点击
DBLClick dblclick 通知鼠标双击
Select select 通知对象被选择
Deselect deselect 通知对象被取消选择
SelectionChange selectionchange 通知对象选择集合更新

下一个教程中,我们来学习动画

该文件修订时间: 2022-02-28 16:17:18

results matching ""

    No results matching ""