2016-02-25 58 views
0

我试图创建一个DataTable,其中所提供的数据有,我需要使用的列子对象中引用的列。数据表 - 子对象

示例数据:

data: { 
    player: { 
     name: 'Sir Testington', 
     outfit: 'Blah Outfit' 
    }, 
    metrics: { 
     kills: 123, 
     deaths: 123 
    } 
} 

示例数据表代码:

$('#playerLeaderboard').DataTable({ 
    data: $scope.alert.metrics.players.data, 
    columns: [ 
     { data: player.name }, // Fails here, not able to reference subobjects 
     { data: player.outfit }, 
     { data: metrics.kills }, 
     { data: metrics.deaths } 
    ] 
}); 

人有什么想法?

+0

你有任何控制台错误? – fbid

+0

警报触发说数据表找不到列。 –

+0

你有'player'和'metrics'数据,你应该使用'data.player.name'并且数据应该是这样'data = {player:{name:'Sir Testington',outfit:'Blah Outfit '},指标:{杀死人数:123,死亡人数:123 }}' – CMedina

回答

0

首先,你的data文字(或JSON)必须是一些东西。这可能是一个数组的数组,嵌套的项目或任何其他数组。您的数据的文字应该有一个这样的结构:

var data = [ 
    { player: {...}, metrics: {...} }, 
    { player: {...}, metrics: {...} },  
    ... 
] 

然后,如果你data项目中引用到嵌套项目,引用它们作为字符串:

var table = $('#example').DataTable({ 
    data : data, 
    columns: [ 
     { data: 'player.name' }, // Fails here, not able to reference subobjects 
     { data: 'player.outfit' }, 
     { data: 'metrics.kills' }, 
     { data: 'metrics.deaths' } 
    ] 
}) 

你不能对变量或对象的引用不存在(player.outfit不存在) - 但数据表可以很容易地计算出你引用嵌套的项目,如果你传递一个路径到该项目,像'player.outfit'。看到你的代码在这里工作 - >http://jsfiddle.net/xsjkegL9/