eventProxy的使用api

eventProxy是一款非常好用的javascript事件管理系统,他可以用于前端或者后端,一共有如下方法:

//绑定事件
test("EventProxy - bind/trigger", function() {
    var obj = new EventProxy();
    var counter = 0;
    obj.bind("event", function(data) {
        counter += 1;
    });
    obj.trigger("event");
    equal(counter, 1, 'Counter should be incremented.');
    obj.trigger("event");
    equal(counter, 2, 'Counter should be incremented.');
    obj.trigger("event");
    equal(counter, 3, 'Counter should be incremented.');
    obj.trigger("event");
    equal(counter, 4, 'Counter should be incremented.');
});
//解绑事件
test("EventProxy - bind, then unbind all functions", function () {
    var obj = new EventProxy();
    var counter = 0;
    obj.bind('event', function() {
        counter += 1;
    });
    obj.trigger('event');
    equal(counter, 1, 'counter should be incremented.');
    obj.unbind('event');
    obj.trigger('event');
    equal(counter, 1, 'counter should have only been incremented once.');
});
//只触发一次
test("EventProxy - once/trigger", function () {
    var obj = new EventProxy();
    var counter = 0;
    obj.once('event', function() {
        counter += 1;
    });
    obj.trigger('event');
    equal(counter, 1, 'counter should be incremented.');
    obj.trigger('event');
    equal(counter, 1, 'counter should have only been incremented once.');
});
//刚绑定好就触发
test("EventProxy - immediate", function () {
    var obj = new EventProxy();
    var counter = 0;
    obj.immediate('event', function (){
        counter +=1;
    });
    equal(counter, 1, "counter should be incremented.");
    obj.trigger('event');
    equal(counter, 2, "counter should be incremented.");
});
//把参数传入
test("EventProxy - immediate/parameter", function () {
    var obj = new EventProxy();
    var param = 0;
    obj.immediate('event', function (data){
        equal(data, param, "data should same as param.");
    }, param);
});
//只触发一次
test("EventProxy - assign one event", function () {
    var obj = new EventProxy();
    var counter = 0;
    obj.assign('event', function() {
        counter += 1;
    });
    obj.trigger('event');
    equal(counter, 1, 'counter should be incremented.');
    obj.trigger('event');
    equal(counter, 1, 'counter should have only been incremented once.');
});
//只触发一次,在所有event好了以后触发
test("EventProxy - assign two events", function () {
    var obj = new EventProxy();
    var counter = 0;
    obj.assign('event1', 'event2', function(event1, event2) {
        equal(event1, 'event1', 'counter should not be incremented.');
        equal(event2, 'event2', 'counter should not be incremented.');
        counter += 1;
    });
    obj.trigger('event1', 'event1');
    equal(counter, 0, 'counter should not be incremented.');
    obj.trigger('event2', 'event2');
    equal(counter, 1, 'counter should be incremented.');
    obj.trigger('event2');
    equal(counter, 1, 'counter should have only been incremented once.');
});

//来一次触发一次
test("EventProxy - assignAlways", function () {
    var obj = new EventProxy();
    var counter = 0;
    var event2 = null;
    obj.assignAlways('event1', 'event2', function(data1, data2) {
        counter += 1;
        equal(data2, event2, 'Second data should same as event2.');
    });
    obj.trigger('event1', 'event1');
    equal(counter, 0, 'counter should not be incremented.');
    event2 = "event2_1";
    obj.trigger('event2', event2);
    equal(counter, 1, 'counter should be incremented.');
    event2 = "event2_2";
    obj.trigger('event2', event2);
    equal(counter, 2, 'counter should be incremented.');
});
//在第N次以后触发
test("EventProxy - after, 5 times", function () {
    var obj = new EventProxy();
    var counter = 0;
    obj.after('event', 5, function(data) {
        equal(data.join(","), "1,2,3,4,5", 'Return array should be 1,2,3,4,5');
        counter += 1;
    });
    obj.trigger('event', 1);
    equal(counter, 0, 'counter should not be incremented.');
    obj.trigger('event', 2);
    equal(counter, 0, 'counter should not be incremented.');
    obj.trigger('event', 3);
    equal(counter, 0, 'counter should not be incremented.');
    obj.trigger('event', 4);
    equal(counter, 0, 'counter should not be incremented.');
    obj.trigger('event', 5);
    equal(counter, 1, 'counter should be incremented.');
    obj.trigger('event', 6);
    equal(counter, 1, 'counter should have only been incremented once.');
});
//0次等同于立刻触发
test("EventProxy - after, 0 time", function () {
    var obj = new EventProxy();
    var counter = 0;
    obj.after('event', 0, function(data) {
        equal(data.join(","), "", 'Return array should be []');
        counter += 1;
    });
    equal(counter, 1, 'counter should be incremented.');
});
//任何一个被注册的事件触发都会导致注册的事件被触发
test("EventProxy - any", function () {
    var obj = new EventProxy();
    var counter = 0;
    var eventData1 = "eventData1";
    var eventData2 = "eventData2";
    obj.any('event1', 'event2', function(map) {
        equal(map.data, eventData1, 'Return data should be evnetData1.');
        equal(map.eventName, "event1", 'Event name should be event1.');
        counter += 1;
    });
    obj.trigger('event1', eventData1);
    equal(counter, 1, 'counter should be incremented.');
    obj.trigger('event2', 2);
    equal(counter, 1, 'counter should not be incremented.');
});
//除了某种事件以外的其他事件都可以触发
test("EventProxy - not", function () {
    var obj = new EventProxy();
    var counter = 0;
    obj.not('event1', function(data) {
        counter += 1;
    });
    obj.trigger('event1', 1);
    equal(counter, 0, 'counter should not be incremented.');
    obj.trigger('event2', 2);
    equal(counter, 1, 'counter should be incremented.');
    obj.trigger('event2', 2);
    equal(counter, 2, 'counter should be incremented.');
});


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值