1. observable 监控属性及依赖跟踪 用法: var myViewModel = { personName: ko.observable('Bob'), personAge: ko.observable(123) }; 读取值:myViewModel.personName(); 设置值:myViewModel.personName("marry"); 2.observableArray 监控属性数组 用法: var myViewModelArray = ko.observableArray(); myViewModelArray.push("aaa"); 或: var myViewModelArray = ko.observableArray([{name:"aaa"},{name:"bbb"}]) 操作数组: myViewModelArray().length myViewModelArray()[0] myViewModelArray.pop():删除第一个元素 myViewModelArray.unshift(""):在数组的开始处增加一个新元素 myViewModelArray.shift():删除数组的第一个元素,并返回其值 myViewModelArray.reverse():反转数组的顺序 myViewModelArray.sort():数组排序 myViewModelArray.splice(index,length):数组截取(从数组的第index个元素开始,截取length个元素,并将它们作为数组返回) myViewModelArray.remove(someItem):移除数组内所有匹配someItem的对象并作为一个新数组返回 myViewModelArray.remove(function(item){return item.age<18}) myViewModelArray.removeAll(["",""])/myViewModelArray.removeAll(); 移除数组内所有匹配["",""]的元素并作为新数组返回,如果没有参数,移除所有元素并作为新数组返回 3.Computed(): 计算属性(依赖属性):可以通过用户的输入得到我们想要的值 eg:如下,我们通过定义read和write方法,可以读取fullName,如果用户更改了fullName,那么firstname 和 lastname也会相应变化 functionMyViewModel(){ this.firstName = ko.observable('Planet'); this.lastName = ko.observable('Earth'); this.fullName = ko.computed({ read: function () { }, write: function (value) { var lastSpacePos = value.lastIndexOf(" "); if (lastSpacePos > 0) { this.firstName(value.substring(0, lastSpacePos)); this.lastName(value.substring(lastSpacePos + 1)); }, owner: this }); } ko.applyBindings(new MyViewModel()); <p>Firstname:<spandata-bind="text: firstName"></span></p> <p>Lastname:<spandata-bind="text: lastName"></span></p> <h2>Hello,<inputdata-bind="value: fullName"/>!</h2> 1)用法: 1、ko.computed(evaluator [,targetObject,option]) evaluator:用于计算一个依赖属性的值的方法 targetObject:可选,如果给定,当KO调用回掉函数时,定义一个值表示 options:依赖属性的参数对象,可参考2 2、ko.computed(options):单一参数方式接受一个js对象或以下任意属性来创建一个依赖属性 read:必须,传入方法,用于计算当前依赖属性当前值的方法 write:可选,传入方法,如给定,将会使依赖属性可写!通过自定义逻辑来处理传入的值,并可将值写入到相关监控属性中 owner:可选,传入对象,通常传入的对象作为this关键字在ko调用read和write方法使用 defaultEvaluation:可选,传入true/false:true--依赖属性的值在实际被访问到之前是不会被计算的,默认情况下,依赖属性的值在创建过程中就已经被初始化了 disposeWhen:可选,传入方法,每一次运算结束,都会被调用(触发依赖属性的disposal方法)来释放依赖属性 disposeWhenNodeIsRemoved:可选,传入方法:当指定DOM元素被删除的时候,依赖属性的disposal方法会被触发,释放依赖属性 2)依赖属性的方法: extend(extenders)--用于扩展依赖属性 getDependenciesCount()--返回依赖属性当前依赖关系数量 getSubscriptionsCount()--返回依赖属性当前订阅数量 isActive()--返回依赖属性在以后是否会被更新,一个依赖属性没有依赖关系的话是无效的 peek()--在无需创建依赖关系去控制一个监控属性或依赖属性 subscribe(callback [,callbackTarget,event])--注册一个手动订阅来通知依赖属性的变化 |
|
来自: 昵称45170253 > 《knockout》