【问题标题】:Accessing fields with '@' symbol of object in dGrid使用 dGrid 中对象的“@”符号访问字段
【发布时间】:2013-08-23 07:33:41
【问题描述】:

我在 dGrid 中设置图层字段时遇到问题。

store = new Memory({data: someData});
grid = new Grid({
    store: store
});

layout = {[label: 'ID', field: '@attributes', formatter: getId]};

grid.set('columns', layout);

someData 是一个具有以下结构的对象

someData = {
{@attributes: {
    id: someId
}},
{@attributes: {
    id: someId
}},
};

getId = function (value, rowId) {
return value.id;
};

好吧,它无法获取 ID 或任何东西。

感谢任何建议。在此先感谢:)

【问题讨论】:

  • 您是否尝试过引用字段名称:someData = {'@attributes': {id: someId}};
  • @Thilo 我对数据没有真正的控制权,因为它是从服务器外部作为 JSON 对象接收的。
  • getId 是什么?你做的一个功能? dgrid 的一部分?

标签: javascript json dgrid


【解决方案1】:

您显然无法使用点表示法访问它。您必须使用方括号表示法。

someData['@attributes'].id

不清楚getId 是您创建的还是 dgrid 的一部分,您无法更改它。如果是后者,您应该在访问 @attributes 属性之后重命名它,但在将其发送到 dgrid 之前。

someData.attributes = someData['@attributes'];
delete someData['@attributes'];
// send it off to dgrid...

【讨论】:

  • getId 是我创建的,目的是利用格式化程序对您的答案做类似的事情。但事实证明 dgrid 无法将“@attributes”传递给该方法。我不清楚的另一件事是 someData 包含对象数组而不仅仅是一个数组。所以更改属性的名称似乎不是我想要的。干杯。
【解决方案2】:

正如你们已经知道的那样,解决方案非常简单,要访问带有 @ 符号的对象,您需要括号表示法。由于dGrid 支持formatter,您可以通过这样做来完成任务

layout = {[
    label: 'ID', field: '@attributes', formatter: function (value) {
        return value['@attributes'].id;}
]};

这将在@attributes中显示ID值。

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 2010-11-12
    相关资源
    最近更新 更多