KendoUI:无法将数据绑定到JSON文件中的HTML元素。

时间:2013-04-11 08:24:25

标签: mvvm kendo-ui

我是kendo ui和mvvm的新手,我正面临这个问题:

我有以下格式的JSON文件:

[
{
"Id":1,
"img":"shoes.png"},
{"Id":2,
"img":"books.png"}
    }
]

我正在使用剑道人在线提到的样本阅读文件,如下所示:

var crudServiceBaseUrl = "pro.json";
    var viewModel = kendo.observable({
            productsSource: new kendo.data.DataSource({
                transport: {
                    read: {
                        url: crudServiceBaseUrl,
                        dataType: "json"
                    },
                    update: {
                        url: crudServiceBaseUrl,
                        dataType: "json"
                    },
                    destroy: {
                        url: crudServiceBaseUrl,
                        dataType: "json"
                    },
                    parameterMap: function(options, operation) {
                        if (operation !== "read" && options.models) {
                            return {
                                models: kendo.stringify(options.models)
                            };
                        }
                        return options;
                    }
                },
                batch: true,
                schema: {
                    model: {
                        id: "Id"
                    }
                }
            })
        });

        kendo.bind($("#form-container"), viewModel);

我能够将数据源中的数据绑定到Kendo Control,例如下拉列表或其他一些Kendo Control。但是当我尝试将数据绑定到HTML控件(主要是img标签)时。它停止工作并发出错误说“this.parent”不是函数。

以下是有效的HTML:

Select Product: <select data-role="dropdownlist" data-value-field="Id" data-text-field="img"
                         data-bind="source: productsSource"></select>

但是,绑定到普通<img>标记不起作用。简而言之,我需要使用kendo ui mvvm将基于src值的图像绑定到div。

请帮助我。谢谢!!

- Hardik

1 个答案:

答案 0 :(得分:0)

目前,Kendo MVVM无法将数据源绑定到HTML元素。只有Kendo UI小部件可以绑定到kendo.data.DataSource。使用小部件,例如ListView适用于DIV

<div data-role="listview" 
     data-template="template"
     data-bind="source: productsSource">
</div>

<script id="template" type="text/x-kendo-template">
   <img data-bind="attr: { src: img }" />
</script>