我正在尝试将数组绑定到列表中,但列表需要在数组值之前有一个静态元素。
小提琴显示我想要的结果,除了它当前嵌套li
项目。
HTML:
<ul id="root">
<li>blop</li>
<li data-template="list-template" data-bind="source: products">
</li>
<script id="list-template" type="text/x-kendo-template">
<li data-bind="text: name"></li>
</script>
</ul>
JavaScript的:
var vm = kendo.observable({
products: [
{ id: 1, name: "foo" },
{ id: 2, name: "bar" }
]
});
kendo.bind($("#root"), vm);
使用KnockoutJS,可以使用注释语法:
<!-- ko: foreach: products -->
<!-- /ko -->
Kendo UI中有类似内容吗?
答案 0 :(得分:1)
我认为你应该能够通过扩展kendo绑定来实现这一目标。我在jsfiddle提出了一个小例子,看看它是否符合您的要求。
kendo.data.binders.staticValue = kendo.data.Binder.extend({
refresh: function () {
debugger;
var that = this;
var value = that.bindings["staticValue"].get();
$(that.element).text(value + $(that.element).text());
}
});
答案 1 :(得分:0)
这是一个我知道的老问题,但是如果这个人想要严格执行mvvm,他们所需要的就是调用相同的数据绑定和数据模板,但是将它放在容器元素上,例如
<ul data-template="template-id" data-bind="source: items"></ul>
并在模板上只需更改
<script id="list-template" type="text/x-kendo-template">
<li data-bind="text: name"></li>
</script>
要
<script id="list-template" type="text/x-kendo-template">
<li>#: staticValue # :: #: name #</li>
</script>
模型中传递给模板的任何东西都可用,甚至可以混合使用数据 - *注入模板#:#syntax