knockoutjs六 with 绑定

今天要讲的是with绑定,with绑定和if有点相似,用官方文档的说法他的作用是创建了一个上下文,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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>
<script>

function Model() {
var self = this;
city=ko.observable( "London");
coords=ko.observable( {
latitude: 51.5001524,
longitude: -0.1262362
});
}
var model = new Model();
ko.applyBindings(model);

</script>

因为用了with,所以with下面的子元素的节点就不需要使用coords.latitude和coords.longitude了,因为他们这时候的上下文已经切换到了coords下了。

当然with还有个作用,当with的条件是null或者是undefined,那么下面的子元素就不会加载,如果不空就加载,这样就避免了一些错误,不会当coords是null或者是undefined的时候还调用coords.latitude发生报错。
也可以使用虚节点调用with:

1
2
3
4
5
6
7
8
9
<ul>
<li>Header element</li>
<!-- ko with: outboundFlight -->
...
<!-- /ko -->
<!-- ko with: inboundFlight -->
...
<!-- /ko -->
</ul>

这次的比较简单,就介绍这么多。代码托管在https://github.com/lushunming/knockoutJSDemo.git可以直接克隆。希望大家有意见可以留言,有疑问或者错误可以加我的qq1357197829和我交流