Target

Module

Class

Class Detail

class event.Target
Target ( event )
通过将该对象混入普通对象就可以使得普通对象和 dom 节点一样也能触发, 添加和删除事件.

Methods Detail

Target.fire()
fire ( type , eventData)
触发绑定 type 类型的事件处理器, 并给触发的事件处理器的事件对象参数中混入数据 eventData
Parameters:
  • type (string) – 要触发的自定义事件名称
  • eventData (object) – 要混入触发事件对象的数据对象
Returns:

如果其中一个事件处理器返回 false , 则返回 false, 否则返回最后一个事件处理器的返回值

Target.publish()
publish ( type , cfg)
配置自定义事件的一些特有信息
Parameters:
  • type (string) – 事件类型字符串
  • cfg (object) –

    事件的具体配置对象,目前包括

    publish.cfg.bubbles

    类型 boolean. 是否支持冒泡。 默认 true

    publish.cfg.defaultFn

    类型 Function.

Target.addTarget()
addTarget ( target )
添加冒泡事件源对象
Parameters:target (EventTarget) – 事件往上冒泡的事件源

例如:

KISSY.use("event", function(S, Event) {
    function Custom(id){
        this.id = id;
        this.publish("run",{
            bubbles:1
        });
    }

    S.augment(Custom, Event.Target);

    var c1 = new Custom("c1");

    var c2 = new Custom("c1");

    c1.addTarget(c2);

    c2.on("run",function(e){
        S.log(e.target.id +" fires event run"); // => c1 fires event run
    });

    c1.fire("run");
});
Target.removeTarget()
addTarget ( target )
删除冒泡事件源对象
Parameters:target (EventTarget) – 事件往上冒泡的事件源
Target.on()
on ( type , fn [ , scope ] )
绑定事件处理器, 可参考 Event.on()
Target.detach()
detach ( type [ , fn , scope ] )
解除绑定的事件处理器, 可参考 event.detach()
var S = KISSY;

// 定义 Dog 类
function Dog(name) {
    this.name = name;
}

// 让 Dog 成为事件目标
S.augment(Dog, S.EventTarget);

// 给 Dog 添加 run 方法
S.augment(Dog, {
   run: function() {
       // 触发 running 事件
       this.fire('running', {speed: '80km/h'});
   }
});

var dog = new Dog('Lady Gogo');

// 添加监听函数
dog.on('running', function(ev) {
    // 注意 ev 的参数传递大使身份
    alert(this.name + ' is running now. Its speed is ' + ev.speed);
});

// 让可爱的小狗跑起来吧
dog.run();

Note

注意 S.EventTarget 仅用于 mix/augment ,不可以直接使用,例如需要全局事件的话可以:

var globalEvent=S.mix({},S.EventTarget);
globalEvent.on('Login:session:pass', function(){
  isSessionPass = true;
});