jQuery DataTables fnrender с объектами - PullRequest
6 голосов
/ 29 июня 2011

Я использую jQuery DataTable для формирования таблицы из этого "data.txt":

{ "aaData" : [  
{       
    "ftitle": "Test1",
    "link": "http://server.com/test1/",
    "fname": "test1.pdf",
    "fid": "test1_353752165.pdf"
},
{       
    "ftitle": "Test2",
    "link": "http://server.com/test2/",
    "fname": "test2.pdf",
    "fid": "test2_353754257.pdf"
} ] }

Это мой код JS:

$('#example').dataTable( {
    "bProcessing": true,
    "sAjaxSource": "data/data.txt",
    "aoColumns": [
        {   "sClass": "center",
            "fnRender": function( oObj ) {
                return oObj.aData[0]+' '+ oObj.aData[2]; 
            } 
        },
        { "mDataProp": "fid", "sClass": "center" },
        { "mDataProp": "fname", "sClass": "center" }
    ],
} );

Я просто хочу получить фактические данные с .aData fnrender () , но это работает только с данными только для массива. Теперь я получаю «undefined undefined», если я использую .txt только с массивом данных, он работает нормально.

Я думаю, что неправильно понимаю fnrender, особенно при работе с объектами.

1 Ответ

20 голосов
/ 11 июля 2011

Вы получаете "undefined", потому что oObj.aData является объектом, а не массивом, и нет поля "0". Используйте следующий синтаксис:

oObj.aData.link

или

oObj.aData["link"]

Полный пример (только измененное возвращаемое значение fnRender):

$('#example').dataTable( {
    "bProcessing": true,
    "sAjaxSource": "data/data.txt",
    "aoColumns": [
        {   "sClass": "center",
            "fnRender": function( oObj ) {
                return '<a href="' + oObj.aData.link + '">' + oObj.aData.ftitle + '</a>';
            } 
        },
        { "mDataProp": "fid", "sClass": "center" },
        { "mDataProp": "fname", "sClass": "center" }
    ],
} );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...