Backbone 监听 model 中 model 的 change 事件

2014-07-13 15:27:59 +08:00
 lococo
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大神可以给小弟指点下迷津
6014 次点击
所在节点    程序员
3 条回复
lococo
2014-07-13 15:29:42 +08:00
补充: model是一个global的变量,default是Model里的default
ZhaoMiing
2014-07-14 01:15:20 +08:00
1. 很明显set是model上的方法而不是user属性上的,所以写成这样model.set('attribute', 'value')应该可以了。

2. Backbone的change事件是通过set方法的回调来触发的,所以直接修改model里的array对象是不行的。
lococo
2014-07-14 18:08:39 +08:00
@ZhaoMiing
啊, 我忘记说了,我的User也是Backbone.Model.extend
所以user里面是有set方法的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/122410

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX