我是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);
答案 0 :(得分:0)
在我看来,当你执行appEngine.autoPost时,你正在从异步函数返回一个字符串。为此,您的renderEmployees函数需要同步返回字符串。 XTemplates没有内部函数的概念异步返回字符串。