具有没有父元素的源的Kendo mvvm模板

时间:2014-09-02 16:22:22

标签: kendo-ui template-engine kendo-mvvm

我正在尝试将数组绑定到列表中,但列表需要在数组值之前有一个静态元素。

小提琴显示我想要的结果,除了它当前嵌套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);

http://jsfiddle.net/zpqo80pw/

使用KnockoutJS,可以使用注释语法:

<!-- ko: foreach: products -->
<!-- /ko -->

Kendo UI中有类似内容吗?

2 个答案:

答案 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