V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lococo
V2EX  ›  程序员

Backbone 监听 model 中 model 的 change 事件

  •  
  •   lococo · 2014-07-13 15:27:59 +08:00 · 6147 次点击
    这是一个创建于 3794 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    2014-07-14 18:08:39 +08:00
    lococo
        1
    lococo  
    OP
       2014-07-13 15:29:42 +08:00
    补充: model是一个global的变量,default是Model里的default
    ZhaoMiing
        2
    ZhaoMiing  
       2014-07-14 01:15:20 +08:00
    1. 很明显set是model上的方法而不是user属性上的,所以写成这样model.set('attribute', 'value')应该可以了。

    2. Backbone的change事件是通过set方法的回调来触发的,所以直接修改model里的array对象是不行的。
    lococo
        3
    lococo  
    OP
       2014-07-14 18:08:39 +08:00
    @ZhaoMiing
    啊, 我忘记说了,我的User也是Backbone.Model.extend
    所以user里面是有set方法的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   922 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:40 · PVG 04:40 · LAX 12:40 · JFK 15:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.