Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用'访问字段@';dGrid中对象的符号_Javascript_Json_Dgrid - Fatal编程技术网

Javascript 使用'访问字段@';dGrid中对象的符号

Javascript 使用'访问字段@';dGrid中对象的符号,javascript,json,dgrid,Javascript,Json,Dgrid,我在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: {

我在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;
};
嗯,它不能得到身份证或其他任何东西


我很感激你的建议。提前感谢:)

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

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

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

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

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

这将在
@attributes

中显示ID值。您是否尝试引用字段名:
someData={'@attributes':{ID:someId}
?@Thilo由于数据是从服务器外部作为JSON对象接收的,所以我在数据上没有真正的控件。什么是
getId
?你做的一个函数?dgrid?getId的一部分是我创建的,它利用formatter对您的答案执行类似的操作。但事实证明dgrid无法将“@attributes”传递给该方法。我还不清楚的是,有些数据包含对象数组,而不仅仅是单个数组。所以,改变财产的名称似乎不是我想要的。干杯