zoukankan      html  css  js  c++  java
  • 【Knockout】四、绑定上下文

    Binding context

    binding context是一个保存数据的对象,你可以在你的绑定中引用它。当应用绑定的时候,knockout自动创建和管理binding context的继承关系。这种层次结构的根引用你指定的viewModel参数(ko.applyBindings(viewModel))。

    然后每次使用一个控制流如with或者foreach 来创建一个子节点binding context引用嵌套的viewModel data。

    $parent

    <h1 data-bind="text: name"></h1>
     
    <div data-bind="with: manager">
        <!-- Now we're inside a nested binding context -->
        <span data-bind="text: name"></span> is the
        manager of <span data-bind="text: $parent.name"></span>
    </div>

    $parents

    这是一个数组,代表了所有的父节点view models

    $parent[0] : 代表父节点;

    $parent[1] : 代表祖父节点;

    $parent[1] : 代表曾祖父节点;

    .....以此类推

    $root

    它是root context的根节点视图模型对象,一般是通过ko.applyBindings指定的,相当于$parents[$parents.length - 1]。

    $component

    如果你在一个特定的组件模板的上下文中,$component指定的是那个component,它的指定组件相当于$root,在嵌套的组件情况下,它代表了最邻近的一个组件。

    $data

    它代表了当前上下文中的viewModel对象,$data和$root是相当的。在嵌套的binding context中,这个参数将设置到当前的数据项。

    $data是非常有用的,例如,当你想引用viewModel本身而不是viewModel的属性的时候。

    <ul data-bind="foreach: ['cats', 'dogs', 'fish']">
        <li>The value is <span data-bind="text: $data"></span></li>
    </ul>

    $index(仅在foreach binding中可用)

    它是一个在foreach绑定中的数组的从0开始的索引条目。不想其他的context属性,$index是observable的,即会随着数组item的更新而更新。

    $parentContext

    指定了父节点级别的binding context对象,与$parent不同的是,它是在父节点中指定数据而不是binding context。

    $rowData

    它是在当前上下文中,原viewModel的值,通常它相当于$data,但是,如果viewModel被ko以observable来修饰,$data是unobservable的,而$rowData是observable的。

  • 相关阅读:
    [UOJ UNR #2]积劳成疾
    [UOJ UNR#2 黎明前的巧克力]
    [UOJ UNR#2 UOJ拯救计划]
    [Codeforces Round #431]简要题解
    【UOJ UNR #1】争夺圣杯
    【UOJ UNR #1】火车管理
    [UOJ UNR#1]奇怪的线段树
    [暑假的bzoj刷水记录]
    项目(一)--python3--爬虫实战
    接收端--服务器详细阐述
  • 原文地址:https://www.cnblogs.com/baicj/p/5076336.html
Copyright © 2011-2022 走看看