Kendo模板发送数据

时间:2013-08-02 15:32:50

标签: javascript jquery kendo-ui kendo-mobile

我想要的只是简单但我不知道是否可能。

我有一个Kendo Mobile ListView如下:

e.view.element.find("#list-serviceorders").kendoMobileListView({
    dataSource: ds,
    pullToRefresh: true,
    template: $("#list-serviceorders-template").html()
});

我想向模板发送一些值来访问它。我的视图与模板是:

<div data-role="view" data-before-show="GAPCP.viewBeforeShow" id="serviceorders" data-layout="main-item-list">
    <ul id="list-serviceorders"></ul>
</div>

<script id="list-serviceorders-template" type="text/x-kendo-template" data-teste="teste">
    <a href="views/entries.html?id=#: CodOs #">OS: #: CodOs #<br />
    #: parameter.Divi1 #: #: CodDivi1 #/#: parameter.Divi2 #: #: CodDivi2 #</a>
</script>

您可以在哪里阅读parameter.Divi1parameter.Divi2是我想要显示这些值的地方。它们不像其他值那样在数据源中。

我不想创建全局变量'因为我不想弄乱我的代码而我不能为此目的使用函数,因为这些值来自数据库并且它将为每个执行查询列表项迭代。

有关如何做的任何建议?

1 个答案:

答案 0 :(得分:3)

我建议将此信息添加到控制器中的模型中。您可以在DataSource.schema.parserequestEnd中执行此操作,即使在dataBound事件中,如果窗口小部件接受它,也可以执行此操作。

收到数据后,您将遍历模型并填写未从服务器收到的剩余数据。

示例:使用parse

var ds = new kendo.data.DataSource({
    transport: {
        read: {
            url : ...
        }
    },
    schema   : {
        model: {
            CodOs   : { type: "number" },
            CodDivi1: { type: "string" },
            CodDivi2: { type: "string" }
        },
        parse: function (data) {
            $.each(data, function (idx, elem) {
                // Extend original elem
                elem.parameter = {
                    Divi1: elem.CodDivi1.toUpperCase(),
                    Divi2: elem.CodDivi2.toLowerCase()
                }
            });
            return data;
        }
    }
});

我在parameter函数中计算parse的位置,并将parameter.Divi1设置为大写CodDivi1,将parameter.Divi2设置为CodDivi2小写