我一直在玩弄微软关于jQuery Templates 和Data Linking 的提议,到目前为止它进展顺利。
TLDR, checkout this demo.
将一段 HTML 与一个 JavaScript 对象链接起来非常容易,然后只更新 JavaScript 对象,HTML 就会自动更新。
这是一个简单的例子。创建代表您的小部件的 HTML。
<div class="book">
<img width="100" height="100" src="" />
<div class="title"></div>
<div class="price"></div>
</div>
然后创建一个 JavaScript 对象并将其动态链接到上面的 HTML。这是一个示例对象:
var book = {
title: "Alice in Wonderland",
price: 24.99,
onSale: true,
image: "http://bit.ly/cavCXS"
};
现在到实际的链接部分。我们要链接的项目是:
- 外部 div 中的
data-onsale 属性将是“true”或“false”
- 图像
src 属性为我们图书的图像属性
- title 属性的title div
- price div 到 price 属性
以下设置链接。请注意,我们在这里只进行单向链接,但也可以使用 linkBoth 函数设置双向链接。
$(book)
.linkTo('title', '.title', 'html')
.linkTo('price', '.price', 'html')
.linkTo('image', '.book img', 'src')
.linkTo('onSale', '.book', 'data-onsale')
就是这样。从现在开始,只需更新 book 对象,HTML 就会自动更新。更新图书的属性,就像使用 attr 函数更新 html 属性一样。
$(book).attr({
price: 14.75
});
或
$(book).attr('price', 14.75);
上面的代码只使用了数据链接,但提案还提到了将数据链接与模板结合起来,这将使这更加容易。据我估计,您将能够做到这一点并获得上述功能:
<script id="bookTemplate" type="text/html">
<div class="book" data-onsale="{{link onSale }}">
<img width="100" height="100" src="{{link image }}" />
<div class="title">{{link title }}</div>
<div class="price">{{link price }}</div>
</div>
</script>
将上述模板与图书对象一步链接并添加到页面中:
$('#bookTemplate').render(book).appendTo('body')
更新书本对象的属性,变化会反映出来。