• Backbone的 listenTo 和 on


    使用情景区别

    listenTo用于监听自身意外的对象

    on用于监听自身

     

    listenTo和on中的回调函数里的this的区别

     

    listener.listenTo(object, 'eventName', function(){
    
        //此处的this指向listener
    
    })
    
    object.on('eventName', function(){
    
        //此处的this指向object
    
    })
    
    object.on('eventName', function(){
    
        //此处的this指向context
    
    }, context)

    触发顺序

    当存在同名事件时,会按定义顺序执行,on和listenTo定义的事件会处在同一队列中

    若监听了all事件,则触发任意事件都将会在执行完相应回调后执行all事件的回调,  all事件的监听会传递一个参数,该参数为事件名字

     

    demo

     1                var a = {type: "I'm listening"}, b = {type: "I'm listened"};
     2                 _.extend(a, Backbone.Events);
     3                 _.extend(b, Backbone.Events);
     4                 b.on('onNoContext', function(){
     5                     console.log('trigger onNoContext');
     6                     console.log(this.type);
     7                 });
     8                 b.on('onContext', function(){
     9                     console.log('trigger onContext');
    10                     console.log(this.type);
    11                 }, a);
    12                 a.listenTo(b, 'listened', function(){
    13                     console.log('trigger listened');
    14                     console.log(this.type);
    15                 });
    16                 b.on('all', function(){
    17                     console.log('trigger on all');
    18                 });
    19                 a.listenTo(b,'all', function(){
    20                     console.log('trigger listen all');
    21                 });
    22 
    23                 console.log('###b.trigger("all")###');
    24                 b.trigger('all');
    25                 console.log('###b.trigger("onNoContext")###');
    26                 b.trigger('onNoContext');
    27                 console.log('###b.trigger("onContext")###');
    28                 b.trigger('onContext');
    29                 console.log('###b.trigger("listened")###');
    30                 b.trigger('listened');

    运行结果:

    1  ###b.trigger("all")### 
    2  trigger on all 
    3  trigger listen all
    4  trigger on all 
    5  trigger listen all 
    6  ###b.trigger("onNoContext")### 
    7  trigger onNoContext 
    8  I'm listened 
    9  trigger on all 
    10 trigger listen all 
    11 ###b.trigger("onContext")###
    12 trigger onContext 
    13 I'm listening 
    14 trigger on all 
    15 trigger listen all 
    16 ###b.trigger("listened")### 
    17 trigger listened
    18 I'm listening 
    19 trigger on all 
    20 trigger listen all 
  • 相关阅读:
    [国家集训队]数颜色 / 维护队列
    【模板】二逼平衡树(线段树+平衡树)
    jenkins实现接口自动化持续集成(python+pytest+ Allure+git)
    Locust快速上手指南
    缓解多分类的样本不均衡问题
    PlayStation@4功能介绍及测试应用
    APP专项测试-弱网测试
    游戏自动化测试-局内战斗
    Windows下JMeter分布式压测环境搭建
    基于simhash的文本去重原理
  • 原文地址:https://www.cnblogs.com/willkan/p/3375225.html
Copyright © 2020-2023  润新知