开发手册 欢迎您!
软件开发者资料库

KnockoutJS - Dependency Tracking

KnockoutJS依赖关系跟踪 - 从简单和简单的步骤学习KnockoutJS,从基本到高级概念,包括概述,环境设置,应用程序,MVVM框架,Observables,计算可观察量,声明性绑定,依赖性跟踪,自动UI刷新,模板,组件。

当值更新时,KnockoutJs会自动跟踪依赖关系.它有一个名为 dependency tracker 的单个对象(ko.dependencyDetection),它作为订阅依赖关系的双方之间的中间人.

以下是算法依赖性跟踪.

依赖性跟踪

步骤1 : 每当你声明一个计算的observable时,KO立即调用它的求值函数来获得它的初始值.

第2步 : 订阅设置为评估者读取的任何可观察对象.在应用程序中,处理不再使用的旧订阅.

步骤3 :  KO最终通知更新的计算可观察量.

示例

         KnockoutJS How Dependency Tracking Works                           
                     Add Fruits:                         0">Add            

Your fruits list:

                            
                     

输出

让我们执行以下步骤,了解上述代码的工作原理 :

  • 将上述代码保存在 dependency_tracking.htm 文件中.

  • 在浏览器中打开此HTML文件.

  • 输入任何水果名称,然后单击添加按钮.

使用Peek控制依赖项

通过使用peek函数,可以在不创建依赖关系的情况下访问Compute Observable。 它通过更新计算的属性来控制Observable。

示例

         KnockoutJs Controlling Dependencies Using Peek                                    

Computed Log

         
      
               

输出

让我们执行以下步骤,看看上面的代码如何工作:

  • 将以上代码保存在dependency_tracking_peek.htm文件中。

  • 在浏览器中打开此HTML文件。

观察

忽略计算依赖关系中的依赖关系

ko.ignoreDependencies 函数有助于忽略那些您不想在计算的依赖关系中跟踪的依赖关系.以下是它的语法.

  ko.ignoreDependencies(callback,callbackTarget,callbackArgs);

为什么循环依赖无意义

如果KO正在评估Computed Observable,那么它将不会重启评估依赖的Computed Observable.因此,在依赖链中包含循环是没有意义的.