2014-06-18 121 views
1

那麼我有從PHP返回的數據,然後我解析它。數據顯示爲名爲empName的屬性,但不顯示嵌套的屬性。什麼是錯誤的,我需要糾正我的JavaScript代碼。 繼承人從PHP(可變稱爲信息的輸出)返回的JSON字符串:JSRender不渲染對象

[{"empName":"Sam","skillDetails":[{"skill":"Javascript","level":"Intermediate"}]}] 

這裏的模板(數據不顯示的技能和水平)

<script id="tmplEmpDetails" type="text/x-jsrender"> 
{{if data.length > 0}} 
{{for data}} 
<tr> 
    <td class="tg-spn1">{{:#view.data.empName}}</td> 
    <td class="tg-spn1">{{:#view.data.skillDetails.skill}}</td> 
    <td class="tg-spn1 ">{{:#view.data.skillDetails.level}}</td> 
</tr> 
{{/for}}  
{{/if}} 

的JavaScript:

 $.post("indexBase.php", 
     $('#str').val(JSON.stringify(empObj)),        
     function(info){        
      var result = JSON.parse(info);                
      $("#tblEmpDetails tr[id!='hdrEmpDetails']").empty(); 
      $("#tblEmpDetails").append($("#tmplEmpDetails").render({ 
        data : result 
       }));     
     }); 

    $("#mainForm").submit(function() {       
     return false; 
    }); 

    $('.trSkillCls').not(':first').remove(); 
}); 

最後的HTML(當然我需要ŧ o更正我的HTML)

<table class="tg" width="100%" id="tblEmpDetails"> 
<tr id="hdrEmpDetails"> 
    <th class="tg-s6z2" ><strong>Employee</strong></th> 
    <th class="tg-s6z2" ><strong>Skill</strong></th> 
    <th class="tg-s6z2" ><strong>Level</strong></th> 
</tr> 
</table> 

這是否意味着我必須在我的模板循環兩次?

回答

1

我修改了HTML和腳本..

<div id="divEmpDetails" class="designDiv" width="100%"> 
</div> 

<script id="tmplEmpDetails" type="text/x-jsrender"> 
{{for data}} 
    <span class="tg-spn1">Employee: <strong>{{>empName}}</strong></span> 
    <ul> 
    {{for skillDetails}} 
    <li>{{>skill}} : {{>level}}</li> 
    {{/for}} 
</ul> 
    {{/for}} 
</script> 

$("#divEmpDetails").empty(); 
$("#divEmpDetails").append($("#tmplEmpDetails").render({data:result}));