属性值变化发生的事件 - change

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

当我们使用 set 方法,去给对象设置属性的时候,如果新设置的属性的值照原来的值发生了改变,就会在这个模型上面触发一个 change 事件... 同时也会在这个特定的发生变化的属性上面触发一个 change 事件 ... 这个事件的名字可以使用 change 后面加上冒号,再加上这个属性的名字来表示。比如,如果 title 的值发生了变化,就会触发一个 change 事件,还会触发一个 change:title 的事件。

下面,我们可以利用这个变化的事件去做点事 ...

在这个模型的初始化方法里面,可以使用 on ,去监听这个 change 事件 ... 用 this 关键词,可以表示当前的这个模型的对象 ... on 方法的第一个参数是要监听的事件的名字 ... 这里就是 change ... 第二个参数是处理这个事件要执行的函数 ..

这里我们用一个匿名函数 ... 它可以授受两个参数 ... 模型对象,还有选项 ... 用 model 表示当前的对象 ... 用 options 表示选项 ...

发生 change 事件,要做的事就是在控制台上,输出一点文字 ...

// 处理属性值改变以后发生的 change 事件
this.on('change', function(model, options) {
console.log('属性的值发生了变化');
});

下面,我们可以再去监听一下改变标题属性的值的时候发生的改变事件 ..

这里要监听的事件是 change:title ... 事件发生以后,同样在控制台上输出点东西 ...

this.on('change:title', function(model, options) {
console.log('标题属性的值发生了变化');
});

保存 ... 下面到浏览器上去试试 ... 新建一个模型对象 .. 再去设置一下它的 title 属性的值 ..

var note = new Note
note.set('title', 'Hello')

回车 ... 在控制台上,会显示 ...

标题属性的值发生了变化 还有 属性的值发生了变化 这两条信息 ... 模型里的属性的值发生了变化 ... 会触发 change 事件 ... 同时,也会触发 change:title 事件,因为 title 这个属性的值也发生了变化 ...

再打开这个对象看一下 ...

这里有一个 changed 属性 ... 打开看一下 ... 这个属性里面的东西就是发生变化的属性,还有对应的值 ...

再设置一下同样的值 ....

因为要设置的 title 属性的值跟当前对象里面的 title 属性的值没有变化 ... 也就不会去触发 change 事件。

属性值变化发生的事件 - change《 Backbone 基础 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点