区别:|区别: ko的subscribe vs computed vs extend
如果需要处理由值变化而引发另一个操作的场景,可以有几种方式:
(1)Subscribe在单值变化的时候使用;
(2)Computed在多个值变化的时候使用;
(3)Extend则一般定义了通用方法,可以让多个observable公用同一个extend方法,类似于C#里面的filter.
具体用法如下:
Subscribe, 该方法有3个参数:
callback是由值变化后触发的callback函数
Target:可选项,callback的this值
event可以定义callback 函数触发的事件,比如:beforeChange,默认是用change
myViewModel.personName.subscribe(function(newValue) {alert("Theperson's new name is "+ newValue);
});
PS: KO的官方文档里解释是,KO在HTML里的声明绑定(Decliaritivebinding),就是使用subscribe的机制来实现的。
既然可以显示声明subscribe,也就可以把它dispose掉
var subscription =myViewModel.personName.subscribe(function(newValue) {/* do stuff */});Computed:
// ...then later...
subscription.dispose(); // I no longer want notifications
如果在computed里面的KO对象的值有变更,都会触发computed函数执行:
functionAppViewModel(){this.firstName = ko.observable('Bob');这里,传递this是 为了在computed里读取fistName和lastName.
this.lastName = ko.observable('Smith');
}
functionAppViewModel(){
// ... leave firstName and lastNameunchanged ...
this.fullName = ko.computed(function() {
returnthis.firstName() +" "+this.lastName();
},this); }
区别:Computed VS Pure Computed
Pure Computed只有当有其他subscriber的时候才会有这个对象,所对应的DOM对象 不激活的时候不存在,这样可以防止内存泄露,在Component等场景下不用担心dispose的问题。
如果computed里面的对象不会有其他写的操作,优先使用pure computed
【区别:|区别: ko的subscribe vs computed vs extend】文章转自这里
推荐阅读
- 58/70|58/70 写作禅-抓出自己最明显的木马程序
- ZYNQ7000|ZYNQ7000 学习(二十一)ZYNQ7 双核处理的运行机制的原理和实现步骤
- Java|从无到有构建亿级高性能高并发高可用的亿级微服务秒杀系统
- ZYNQ7000|ZYNQ7000 学习 (十七)GPIO中断源的配置以及中断试验
- #|vue3下watch的使用
- zynq的emio和axi_ZYNQ入门实例——三种GPIO应用、中断系统及软硬件交叉触发调试...
- 字说天下——傻
- 晨读感悟(别让情绪吞噬了我们的感情)
- 最害怕几百年不联系的人突然加好友
- (干货)跨校跨专业,我是如何考上北大研究生的