2014-09-18 1 views
0

я застрял с этим вопросом в течение длительного времени .. :(Как читать суб-массив из объекта Json в DataTables

У меня есть объект, который им пытаются читать суб-массив из . ниже приводится вид формата JSON им пытаются извлечь qaccess значения из него, как как qaccess.0.product, qaccess.1.product

"qaccess": [ 
    { 
     "product": "wm.od.prod.nsr", 
     "status": "enabled", 
     "roleIdentifiers": [ 

     ], 
     "permissionIdentifiers": [ 

     ] 
    }, 
    { 
     "product": "gp.od.dev.nsr", 
     "status": "Active", 
     "roleIdentifiers": [ 

     ], 
     "permissionIdentifiers": [ 

     ] 
    } 
    ] 

И ниже, если что мой код выглядит следующим образом:..

addColumn: function(oObj, type, val){ 
    //however i checked now, and found that the `oObj, type, val` returns 'null' and hence i am unable to use the addColumn function anymore. that is one problem i faced and hence took up another approach of adding the function in the `mDataProp`, like the one shown in the EDIT part. 

     propertySize = oObj.qaccess.length; 

     for(i=0; i<propertySize; i=i+1){ 
     { 
     "mDataProp": "qaccess." + i + ".product", 


      "sTitle": "Status", 
      "sClass": "_status", 
      "sWidth": "10%", 
      } 
     } 


     }); 
}) 
     this.columns.push(col); 
     // return the index of the new column 
     return this.columns; 


    }, 

Чтобы получить несколько значений объекта, могу ли я записать его в цикл цикла, как показано выше? Ex:

for(i=0; i<propertySize; i=i+1){ { "mDataProp": "qaccess." + i + ".product"}}.

EDIT:

Я также пытался сделать что-то вроде этого:

columns: [ 
{"mRender": function(obj, val, data){ 

    propertySize = data.qaccess.length; 
      for(i=0; i<propertySize; i=i+1){ 
      col= { 
       "mDataProp": "qaccess." + i + ".product", 
       sTitle: "Account Name", sClass: "_accountName", sWidth: "25%" 
      } 
     }  
    } 
}] 

data выше возвратов: из которых им пытаются получить значение 'qaccess [0] .product' и ' qaccess [1] .product "в моей таблице.

. qaccess: Array[2] 
. 0: Object 
.  permissionIdentifiers: Array[0] 
.  product: "wm.od.prod.nsr" 
.  roleIdentifiers: Array[0] 
.  status: "enabled" 
. 1: Object 
⁃  permissionIdentifiers: Array[0] 
⁃  product: "gp.od.dev.nsr" 
⁃  roleIdentifiers: Array[0] 
⁃  status: "Active" 

, как я могу достичь значения значений qaccess массива.

Спасибо.

ответ

1

я сколотить JSFiddle с примером того, как получить доступ к данным: http://jsfiddle.net/a3cc8vat/

Суть заключается в том, что вы используете

obj.qaccess[1].product 

Неправильно:

obj.qaccess.1.product 

И вы не должны использовать кавычки вокруг имени. Вы цикл должен быть больше похож

for(i=0; i<propertySize; i=i+1){ 
     { 
     "mDataProp": this.qaccess[i].product, 

Не уверен, что если this необходим для примера, потому что это трудно сказать, что контекст основан на фрагмент кода.

+0

спасибо, за предоставление этой идеи. однако он работает только тогда, когда у меня есть один объект. когда есть несколько объектов, он предоставляет только последний объект object.qaccess. Многие знают, как обращаться с несколькими объектами ??? Спасибо – user1234

+0

Также this.columns.push (col); ' добавляет столбцы в таблицу, если не обновляется. Есть ли способ избежать этого? Thnks – user1234

+0

У меня возникли проблемы с пониманием того, что вы хотите ??? Также вы ссылались на 'this.columns', но столбцы не указаны в вашем примере кода. – jwatts1980

0

Вы можете получить значение, используя код ниже:

"mDataProp": oObj["qaccess"][i]["product"]

0

Найдено ответ:

   mData: null, 
       sTitle: "Products", 
       sWidth: "10%", 
       sClass: "_status", 
       mRender: function (data, type, obj) { 
        var returnVal = ""; 
        _.each(obj.qaccess, function(item, index){ 
        returnVal += "<span class='_status'>" + item["product"] + "</span>"; 
        }); 
        return returnVal; 

       } 

Это возвращенное меня: знач1 val2.

Спасибо за помощь @ jwatts1980 за помощь, однако мне нужно добавить запятые между этими двумя значениями. Некоторые столбцы могут иметь более одного значения, если так мне нужно добавить запятую, чтобы ее:

val1, val2.

Любая помощь ???

Смежные вопросы