Ext JS - 嵌套的Xtemplates

时间:2013-11-07 20:42:55

标签: javascript extjs

我是ExtJS开发的新手。我有来自2个不同数据存储的数据(例如:DepartmentsStore和EmployeesStore)。我试图在父表中显示部门列表,并将每个部门中的所有员工显示为UI上的父部门表中的嵌套表。

我使用XTemplates加载数据并将其绑定到我的主面板。但是我在嵌套XTemplates时遇到了问题。我不确定我做错了什么,非常感谢任何帮助。这是Xtemplate javascript代码段,

  var tplEmployeesDetails = new Ext.XTemplate(
        '<table width="100%">',
        '<tr><td>Employee First Name</td>',
        '<td>Employee Last Name</td>',
        '<td>Email</td></tr>',

        '<tpl for=".">',
        '<tpl for="data">',
            '<tr><td>{DBxFIRSTNAME}</td>',
            '<td>{DBxLASTNAME}</font></td>',
            '<td>{DBxEMAIL}</td></tr>',
        '</tpl>',
        '</tpl>',
        '</table>'
);

var tplDepartmentDetails = new Ext.XTemplate(
    '<tpl for=".">',
    '<tpl for="data">',
        '<b>Department Detail:</b>',
        '<table>',
        '<tr><td>Department Name</td><td>{DBxDEPTNAME}</td></tr>',
        '<tr><td>Collateral Name</td><td>{DBxDEPTNAME}</td></tr>',

        'Employees Under Department:',
        '{[ this.renderEmployees(values.DBxDEPTID)]}',
        '</td></tr>',
        '{% } %}',

        '</table>',
    '</tpl>',
    '</tpl>',   

    {
        renderEmployees: function(DEPTID)
         { 
             appEngine.autoPost({
                 sysExtScope: 'false',
                 sysIgnoreExtension: 'true',
                 sysAction: 'getdbtable',
                 sysProjectName: 'OrgProject',
                 sysEngineApp: 'OrgApp',
                 sysEngineService: 'DepartmentService',
                 myRoot: 'SessionRespTable',
                 sysEngineOrderBy: 'DEPTID DESC',
                 DBxDEPTID:  DEPTID,
                 myFields: DepartmentServiceFields
              },function(EmployeesStore, Records, Resultflag, Options)
              {
                  employeesStore = EmployeesStore.getStore();

                  //Issue: THIS DOES NOT SEEM TO RETURN THE tplEmployeesDetails Xtemplate markup!!
                  return tplEmployeesDetails.apply(collatPolicyStore);
              });
         }
    }
);

tplDepartmentDetails.append(mainPanel.body, departmentStore);

1 个答案:

答案 0 :(得分:0)

在我看来,当你执行appEngine.autoPost时,你正在从异步函数返回一个字符串。为此,您的renderEmployees函数需要同步返回字符串。 XTemplates没有内部函数的概念异步返回字符串。