【问题标题】:MVVM - Bind JSON Child Elements To Kendo UI ControlsMVVM - 将 JSON 子元素绑定到 Kendo UI 控件
【发布时间】:2014-09-28 10:51:11
【问题描述】:

我想将子节点绑定到两个不同的剑道 ui 控件,但是我的剑道数据源在一次调用中从服务中获取数据,

var viewModel = kendo.observable {
 dataSource : new kendo.data.DataSource({
    transport: {
        read: {
            url: '/data/auras',
            dataType: "json",
            type: 'GET',
        }
    },
    schema: {
      /////////
    },   
 });
}

我的 JSON 响应结果如下所示

[
{
    "id": "0001",
    "type": "donut",
    "name": "Cake",
    "ppu": 0.55,
    "batters": {
        "batter": [
            {
                "id": "1001",
                "type": "Regular"
            },
            {
                "id": "1002",
                "type": "Chocolate"
            },
            {
                "id": "1003",
                "type": "Blueberry"
            },
            {
                "id": "1004",
                "type": "Devil's Food"
            }
        ]
    },
    "topping": [
        {
            "id": "5001",
            "type": "None"
        },
        {
            "id": "5002",
            "type": "Glazed"
        },
        {
            "id": "5005",
            "type": "Sugar"
        },
        {
            "id": "5007",
            "type": "Powdered Sugar"
        },
        {
            "id": "5006",
            "type": "Chocolate with Sprinkles"
        },
        {
            "id": "5003",
            "type": "Chocolate"
        },
        {
            "id": "5004",
            "type": "Maple"
        }
    ]
}    

]

这里我必须将batter(是子元素)绑定到一个Gridview && topping(是子元素)到另一个Gridview,

【问题讨论】:

    标签: mvvm kendo-ui


    【解决方案1】:

    您可以使用schema.parse 将您的 JSON 结果拆分为两个列表。比如:

    var batters = new kendo.data.DataSource({
        data: []
    });
    
    var toppings = new kendo.data.DataSource({
        data: []
    });
    
    var allData = new kendo.data.DataSource({
        transport: {
            read: {
                url: '/data/auras',
                dataType: "json",
                type: 'GET',
            }
        },
        schema: {
            parse: function (data) {
                batters.data(data[0].batters.batter);
                toppings.data(data[0].toppings);
                return data;
            }
        },   
     });
    
    allData.fetch();
    
    var viewModel = kendo.observable({
        batters: batters,
        toppings: toppings
    });
    

    【讨论】:

    • 感谢您的回复,我想把我所有的东西都放在可观察对象中。
    • 可以重新排列代码以将事物移动到可观察对象中。我认为这不会使我的回答出错。
    • 嗨,我还有一个问题,是否可以得到
      "type": "donut", "name": "Cake", "ppu": 0.55,
      来自 allData 数据源
    猜你喜欢
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 2015-05-05
    • 2023-03-06
    相关资源
    最近更新 更多