关于源绑定的文档有一个说明:
重要提示:绑定到数组时,应在模板中使用单个根元素。拥有两个第一级 DOM 元素将导致不稳定的行为。
但是,我发现即使对于非数组也是如此。
我有以下 HTML,它设置了两个由两个模板填充的 div。唯一的区别是工作模板将该数据绑定跨度包装在一个 div 中。
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://cdn.kendostatic.com/2013.3.1119/js/kendo.all.min.js"></script>
<title>JS Bin</title>
<script id="broken-template" type="text/x-kendo-template">
Foo: <span data-bind="text: foo"></span><br/>
Foo Again: <span data-bind="text: foo"></span>
</script>
<script id="working-template" type="text/x-kendo-template">
<div>
Foo: <span data-bind="text: foo"></span><br/>
Foo Again: <span data-bind="text: foo"></span>
</div>
</script>
</head>
<body>
<div id="broken-div" data-template="broken-template" data-bind="source: this">
</div>
<br/>
<br/>
<div id="working-div" data-template="working-template" data-bind="source: this">
</div>
</body>
</html>
JavaScript 只是创建了一个具有单个属性的视图模型并将其绑定到两个 div:
var viewModel = kendo.observable({foo: "bar"});
kendo.bind($("#broken-div"), viewModel);
kendo.bind($("#working-div"), viewModel);
在这两种情况下,只有第一个根元素及其子元素被正确绑定。这表明每次我将数据绑定到具有多个元素的模板时,我都需要确保它被包装在一个根中。
这种行为是否记录在某处?Kendo 或我的示例代码中是否存在错误?关于剑道为什么需要单根的解释也很好听。