您不仅限于使用内置的绑定,如click,value绑定等,您可以创建自己的绑定. 这是如何控制视图模型如何与DOM元素进行交互,并且为您提供了大量的灵活性,以便于以复用的方式封装复杂的行为. 注册绑定 要注册绑定,请将其作为ko.bindingHandlers的子属性添加,比如如下例子: ko.bindingHandlers.yourBindingName = { init: function(element, valueAccessor, allBindings, viewModel, bin…
注意:这是一种高级技术,通常仅在创建可重用绑定的库时使用. 这不是你通常需要做的时候使用Knockout构建应用程序. Knockout的控制流绑定(例如,if和foreach)不仅可以应用于常规DOM元素,而且可以应用于由基于特殊注释的语法定义的"虚拟"DOM元素. 例如: <ul> <li class="heading">My heading</li> <!-- ko foreach: items --> <…
注意:这是一种高级技术,通常仅在创建可重用绑定的库时使用. 默认情况下,绑定仅影响它们应用到的元素. 但是如果你想影响所有的后代元素呢? 为此,只需从绑定的init函数中返回{controlsDescendantBindings:true}即可. 示例1:控制是否应用后代绑定 对于一个非常简单的例子,这里有一个名为allowBindings的自定义绑定,允许后代绑定仅当它的值为true时才应用. 如果值为false,则allowBindings告诉Knockout它负责后代绑定,因此它们不会像往…
在典型的Knockout应用程序中,DOM元素是动态添加和删除的,例如使用模板绑定或通过控制流绑定(if,ifnot,with和foreach). 当创建自定义绑定时,通常需要添加清除逻辑,当Knockout删除与您的自定义绑定相关联的元素时,该逻辑运行. 在处理元素时注册回调 要注册要删除节点时要运行的函数,可以调用ko.utils.domNodeDisposal.addDisposeCallback(node,callback). 例如,假设您创建自定义绑定以实例化窗口小部件. 当具有绑定的…
注意:这是一种高级技术,通常仅在创建可重用绑定或扩展语法的库时使用. 这不是你通常需要做的时候使用Knockout构建应用程序. 从Knockout 3.0开始,开发人员可以通过提供在绑定过程中重写DOM节点和绑定字符串的回调来定义自定义语法. 预处理绑定字符串 您可以通过为特定绑定处理程序(例如click,visible或任何自定义绑定处理程序)提供绑定预处理程序,来挂钩Knockout的逻辑来解释数据绑定属性. 为此,将预处理函数附加到绑定处理程序: ko.bindingHandlers.y…
Components (组件)是一个强大的,干净的方式组织您的UI代码,可重复使用的块. : -可以表示单独的控件/窗口小部件或应用程序的整个部分 -包含自己的视图,通常(但可选)自己的视图模型 -可以预加载或通过AMD或其他模块系统异步加载(按需) -可以接收参数,并可选地将更改写回到它们或调用回调 -可以一起组成(嵌套)或继承自其他组件 -可以轻松地打包,以便跨项目进行重用 -让您定义自己的约定/逻辑进行配置和加载 此模式有利于大型应用程序,因为它通过明确的组织和封装简化了开发,并通过根据需…
目录 本节将介绍六种文本绑定方式: visible绑定 text绑定 html绑定 css绑定 style绑定 attr绑定 可见文本绑定(visible) 使用visible绑定,来控制DOM元素的可见或隐藏 例子: <div data-bind="visible: shouldShowMessage"> You will see this message only when "shouldShowMessage" holds a true value…
原文:Knockout应用开发指南 第五章:创建自定义绑定 创建自定义绑定 你可以创建自己的自定义绑定 – 没有必要非要使用内嵌的绑定(像click,value等).你可以你封装复杂的逻辑或行为,自定义很容易使用和重用的绑定.例如,你可以在form表单里自定义像grid,tabset等这样的绑定. 重要:以下文档只应用在Knockout 1.1.1和更高版本,Knockout 1.1.0和以前的版本在注册API上是不同的. 注册你的绑定 添加子属性到ko.bindingHandlers来注册你的…
目的 template绑定(模板绑定)使用渲染模板的结果填充关联的DOM元素. 模板是一种简单方便的方式来构建复杂的UI结构 . 下面介绍两种使用模板绑定的方法: 本地模板是支持foreach,if,with和其他控制流绑定的机制. 在内部,这些控制流绑定捕获元素中包含的HTML标记,并将其用作模板以针对任意数据项进行呈现. 此功能内置在Knockout中,不需要任何外部库. 基于字符串的模板是一种将Knockout连接到第三方模板引擎的方法. Knockout会将您的模型值传递给外部模板引擎,…
要使Knockout能够加载和实例化组件,必须使用ko.components.register注册它们,从而提供如此处所述的配置. 注意:作为替代,可以实现一个自定义组件加载器(自定义加载器下一节介绍),通过自己的约定获取组件,而不是显式配置. 本节目录 将组件注册为viewmodel/template 指定视图模型 构造函数 共享对象实例 一个createViewModel工厂函数 一个AMD模块,其值描述一个viewmodel 指定模板 现有元素ID 现有元素实例 一串标记 DOM节点数组…