Javascript 使用'访问字段@';dGrid中对象的符号
我在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: {
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”传递给该方法。我还不清楚的是,有些数据包含对象数组,而不仅仅是单个数组。所以,改变财产的名称似乎不是我想要的。干杯