【问题标题】:Binding Knockout/Breeze Entities to IgniteUI igGrid将 Knockout/Breeze 实体绑定到 IgniteUI igGrid
【发布时间】:2014-08-03 04:07:24
【问题描述】:

让我首先陈述我的总体目标,然后我会问具体的问题。我的目标是找到一个 Grid 控件以在我的 SPA(Durandal、Knockout、Breeze 等)中用于 CRUD 功能。对于与 Knockout/Breeze 配合得很好并为我提供所需功能的网格(Kendo、JQGrid、JQXGrid、IgniteUI 等),我从高处和低处寻找,但我似乎找不到。迄今为止最接近的是 IgniteUI 的 iqGrid。

我的具体问题:

我可以使用 Breeze 查询我的 WebAPI,并得到很好的结果。我还可以使用可观察数组手动将结果绑定到网格,并让它们显示没有问题。手动绑定的意思是,我必须设置每个属性并将其推送到数组中。

return this.manager.executeQuery(query)
    .then(function (data) {
        data.results.forEach(function (item) {
            me.data.push({
                Id: item.Id,
                FirstName: item.FirstName,
                LastName: item.LastName,
                ProductName: item.ProductName,
                Quantity: item.Quantity,
                Price: item.Price,
                Created: item.Created,
                Enabled: item.Enabled
            });
        });
    })

“数据”属性是一个 Knockout Observable Array。

然而,这不是我理想的解决方案。如果我向表中添加一个字段,那只是我必须在代码中添加它的一个地方。我理想的解决方案是让 Breeze 实体自动映射到 Knockout Observable Array 并在网格中正确显示。

例如我已经尝试过这个,它适用于使用表格手动创建的简单网格:

return this.manager.executeQuery(query)
    .then(function (data) {
        me.data(data.results);
    })

但这不会在 igGrid 中显示任何数据。

我也试过这个:

me.data = ko.toJS(data.results);

这也不起作用。

所以我的问题是,有没有办法做到这一点?此外,是否有更好的方法来使用现有工具创建 CRUD 应用程序?即无需从头开始编写?

谢谢

【问题讨论】:

    标签: knockout.js breeze ignite-ui iggrid


    【解决方案1】:

    试试这个:

    return this.manager.executeQuery(query)
    .then(function (data) {
        data.results.forEach(function (item) {
            me.data.push(item);
        });
    })
    

    【讨论】:

      猜你喜欢
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 2013-05-04
      • 2018-12-08
      • 2018-03-12
      • 1970-01-01
      • 2014-11-01
      相关资源
      最近更新 更多