backbone里面set原本会触发绑定的change事件,不过如果使用$.extend(true深拷贝一个数据,但是没有实质性改变数据的值,再重新set一下,是不会触发change事件的。

let test = new Backbone.Model()
let data = {
  name: 'yoyo',
}
test.on('change:data', (e, data) => console.log(data))
test.set('data', data) // trigger
let newdata = $.extend(true, {}, data)
test.set('data', newdata) // not trigger

使用的时候应该要小心,一不小心就得不到自己预期的效果。

2017-04-28 10:27:53