Knockout2.x开发 第九章:控制流Control Flow:if绑定与with绑定
2013-04-27 17:25 阅读(195)

"if" 绑定


基本用法

Html代码

<div data-bind="if: displayMessage">
     这是一段文本,只有当displayMessage为true时,才会放入页面中.
</div>
Js代码
ko.applyBindings({
    displayMessage: ko.observable(false)//这里为false,所以该文本不会显示
});
当属性displayMessage的值为true,div中的内容出现到html文档中,为false则不出现。


"with" 绑定

         这个用法比较特殊:


基本用法

Html代码

<h1 data-bind="text: city"> </h1>
<p data-bind="with: coords">
    Latitude: <span data-bind="text: latitude"> </span>,
    Longitude: <span data-bind="text: longitude"> </span>
</p>
Js代码

ko.applyBindings({
        city: "London",
        coords: {
            latitude:  51.5001524,
            longitude: -0.1262362
        }//这里coords对象下面有2个属性。当coords被当做context的时候,后面就可以 直接使用latitude、longtitude来绑定了
    });

说明:

  1. 正如我在注释里说的,with的作用,就是把当前的绑定上下文切换到coords对象上,由于刚开始,绑定上下文是整个viewModel,也就是city、coords所在的对象,所以上面的text绑定可以使用city来绑定。
  2. 当使用了with之后,当前的context已经更深入了一层,变成了coords对象,所以后面可以直接绑定他下面的经纬度属性。