分享

knockout 笔记--API

 昵称45170253 2017-07-07
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])--注册一个手动订阅来通知依赖属性的变化

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多