• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lococo
V2EX  ›  程序员

Backbone 监听 model 中 model 的 change 事件

  •  
  •   lococo · Jul 13, 2014 · 6931 views
    This topic created in 4397 days ago, the information mentioned may be changed or developed.
    model
    default:{
    loggedIn:false,
    user: new User()
    }

    model.get('user').on('change', this.callback, this);


    当我set user中的某个属性时, 例如
    model.get('user').set('attribute', 'value');
    当执行这句话时,callback函数并没有成功调用。

    之前我遇到过一个model中的array变动无法trigger 'change'事件的例子:
    http://stackoverflow.com/questions/8491546/models-change-event-wont-fire-when-updating-an-array

    但是这次我觉得应该是我的监听没有写对,有哪位backbone大神可以给小弟指点下迷津
    3 replies    2014-07-14 18:08:39 +08:00
    lococo
        1
    lococo  
    OP
       Jul 13, 2014
    补充: model是一个global的变量,default是Model里的default
    ZhaoMiing
        2
    ZhaoMiing  
       Jul 14, 2014
    1. 很明显set是model上的方法而不是user属性上的,所以写成这样model.set('attribute', 'value')应该可以了。

    2. Backbone的change事件是通过set方法的回调来触发的,所以直接修改model里的array对象是不行的。
    lococo
        3
    lococo  
    OP
       Jul 14, 2014
    @ZhaoMiing
    啊, 我忘记说了,我的User也是Backbone.Model.extend
    所以user里面是有set方法的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5842 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 06:19 · PVG 14:19 · LAX 23:19 · JFK 02:19
    ♥ Do have faith in what you're doing.