You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否为ui-grid创建可展开行并以UL LI展示详情的自定义模板?

当然可以实现!ui-grid的自定义模板机制完全支持你想要的这种「展开行以UL/LI列表展示详情」的需求,我来给你一步步拆解具体实现方法:

实现步骤

1. 先启用ui-grid的展开行功能

首先要在你的grid配置里开启expandable相关选项,指定自定义模板的位置或者内容:

$scope.gridOptions = {
  // 指向自定义展开模板(可以是外部HTML文件,也可以直接写内联模板)
  expandableRowTemplate: 'expandable-row-template.html',
  // 根据你的详情内容高度调整这个值
  expandableRowHeight: 220,
  // 基础列配置
  columnDefs: [
    { name: 'id', displayName: 'ID' },
    { name: 'username', displayName: '用户名' },
    // 其他列定义...
  ],
  // 你的数据源
  data: yourDataSource
};

2. 编写UL/LI格式的自定义展开模板

方式一:外部HTML模板

创建一个名为expandable-row-template.html的文件,用UL/LI结构渲染行详情:

<ul class="row-details-list">
  <li><strong>用户ID:</strong> {{row.entity.id}}</li>
  <li><strong>用户名:</strong> {{row.entity.username}}</li>
  <li><strong>邮箱:</strong> {{row.entity.email}}</li>
  <li><strong>注册时间:</strong> {{row.entity.registerDate | date:'yyyy-MM-dd HH:mm'}}</li>
  <!-- 按需添加更多需要展示的详情字段 -->
</ul>

方式二:内联模板

如果不想单独创建HTML文件,也可以直接把模板内容写在expandableRowTemplate里,用ES6模板字符串包裹:

$scope.gridOptions.expandableRowTemplate = `
  <ul class="row-details-list">
    <li><strong>用户ID:</strong> {{row.entity.id}}</li>
    <li><strong>用户名:</strong> {{row.entity.username}}</li>
    <li><strong>邮箱:</strong> {{row.entity.email}}</li>
  </ul>
`;

3. 样式优化(可选)

为了让列表看起来更整洁美观,可以添加一些自定义CSS:

.row-details-list {
  list-style: none;
  padding: 16px;
  margin: 0;
}
.row-details-list li {
  margin-bottom: 10px;
  font-size: 14px;
}
.row-details-list strong {
  display: inline-block;
  width: 110px;
  color: #2c3e50;
  font-weight: 600;
}

4. 异步加载详情数据(如果需要)

如果你的详情数据不是直接包含在主行的entity里,而是需要通过API异步获取,可以借助expandableRowScope定义加载方法:

$scope.gridOptions.expandableRowScope = {
  fetchDetails: function(row) {
    // 调用你的数据服务获取详情
    userService.getUserDetails(row.entity.id)
      .then(function(res) {
        // 把获取到的详情数据挂载到row.entity上
        row.entity.extraDetails = res.data;
      });
  }
};

然后在模板里初始化加载并渲染异步数据:

<ul class="row-details-list" ng-init="fetchDetails(row)">
  <li><strong>部门:</strong> {{row.entity.extraDetails.department}}</li>
  <li><strong>职位:</strong> {{row.entity.extraDetails.position}}</li>
  <li><strong>入职时间:</strong> {{row.entity.extraDetails.joinDate | date:'yyyy-MM-dd'}}</li>
</ul>

其实ui-grid的自定义模板支持任意HTML结构,官方文档可能没有直接给出UL/LI的示例,但这种用法完全在框架的扩展能力范围内,放心用就好。

内容的提问来源于stack exchange,提问作者Sridhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:17:06