zoukankan      html  css  js  c++  java
  • KnockoutJS 3.X API 第三章 计算监控属性(3) KO如何实现依赖追踪

    KO是如何实现自动更新的

    初学者可以掠过该篇,如果你是一个刨根问底的开发者,那本节将告诉你KO是如何实现依赖追踪和UI自动更新的。

    其实很简单,KO的依赖追踪算法如下:

    1. 当你声明一个计算监控属性,KO立即调用其相关的函数来获取其初始值。
    2. 当相关函数正在运行,KO将建立一个订阅到相关监控属性(包括其他计算监控属性)并读取他们的值。订阅回调函数设置为订阅函数再次运行,循环的这个过程。
    3. 当有新的值,KO会通知你的计算监控属性将值反馈给用户。

    采用PEEK控制依赖

    Knockout的自动依赖跟踪通常不是你想要的,但是你有时可能需要控制那些会更新依赖属性值的监控属性,特别是依赖属性会执行某些操作时,比如一个Ajax请求。peek方法可以帮助你在不需要创建依赖的情况下去控制一个监控属性或者依赖属性。

    在下面的例子中,依赖属性通过Ajax方法和其他两个监控属性参数来重新加载一个名为currentPageData的监控属性。当pageIndex发生变化时,依赖属性会被更新,但会忽略掉selectedItem的变化,因为它是通过peek方法控制。在这种情况下,用户可能希望仅仅在数据被加载时才使用selectedItem的当前值用于追踪。

    ko.computed(function() {
        var params = {
            page: this.pageIndex(),
            selected: this.selectedItem.peek()
        };
        $.getJSON('/Some/Json/Service', params, this.currentPageData);
    }, this);

    如上面的例子,如果你想做SPA的话,这种方式很有用哦~。如果你想阻止一些过于频繁的监控属性更新,可以参考第二章第一节的延缓或抑制更改通知

  • 相关阅读:
    国外程序员整理的 C++ 资源大全(转)
    深入C#中get与set的详解(转)
    C#异常类型与异常处理
    strcat函数的使用需要注意的问题
    QString转换为char* (转)
    Qt之阴影边框(转)
    Qt 手动添加ui文件到工程(转)
    C++ 类 和 对象!
    怎样才能和编程语言对上眼?你需要做些准备以及...
    【编程骚操作】C++ 获取系统时间!
  • 原文地址:https://www.cnblogs.com/smallprogram/p/5927534.html
Copyright © 2011-2022 走看看