backbone学习笔记(2)- Events

Posted by luoway on November 14, 2015

事件管理

  • on(): 给指定对象绑定指定事件触发时执行的函数。

    • 监听事件
      Obj.on( "eventName", function, [context])
      context表示上下文对象,用于该对象监听另一个对象的事件。

    • 监听属性事件
      Obj.on( "eventName:attrName", function( model, value ) )
      冒号(:)是过滤符,表示它是针对某属性值变化时触发的事件。model是当前的数据模型对象,value表示attrName修改后的值。

    • 获取属性修改前的值
      model.previous("attrName")
      model.previousAttributes()
      此处model即上述function( model, value )

    • 绑定多个事件
      Obj.on( "eventName1 eventName2", function) 多事件同一执行函数;
      var ObjEvent = { "eventName1": function1, … } Obj.on(ObjEvent); 绑定多对事件与执行函数。

  • once(): 绑定的事件只执行一次,以后即使触发也不执行。
    调用格式同on()Obj.on( "eventName", function, [context])

  • trigger(): 手动触发某个事件,触发执行该事件绑定的函数。
    调用格式:Obj.trigger( "eventName" )

  • off(): 移除事件
    调用格式同on()Obj.on( "eventName", function, [context]),不带任何参数表示移除对象的全部事件
    • 移除某事件
      Obj.off( "eventName" )
      多个事件用空格分隔:Obj.on( "eventName1 eventName2" )

    • 移除绑定事件的某个函数
      Obj.off( "eventName", function )

  • listenTo(): 监听其他对象的事件
    调用格式:Obj1.listenTo( Obj2, "eventName", function )
    等价于Obj2.on( "eventName", function, Obj1 )

  • listenToOnce(): 监听一次其他对象的事件
    调用格式同listenTo()Obj1.listenToOnce( Obj2, "eventName", function )
    等价于Obj2.once( "eventName", function, Obj1 )

  • stopListening(): 停止监听
    调用格式同listenTo()Obj1.stopListening( Obj2, "eventName", function )
    等价于Obj2.off( "eventName", function, Obj1 )

  • 事件all : 任何事件触发后该事件跟着触发
    给事件all绑定函数:Obj.on( "all", function( [value]) ),value作为可选参数,可获取当前正在触发事件的名称。
    需要注意的是触发"eventName:attrName"时,实际触发顺序为"eventName:attrName""all"( value = "eventName:attrName" )、"all"( value = "eventName" ),顺序类似于事件冒泡。