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

ui-grid可展开模板ng-click事件失效,求事件绑定及数据访问方案

解决ui-grid可展开模板中ng-click失效与数据访问问题

我之前也踩过这个坑,核心原因是ui-grid的可展开模板运行在隔离作用域里,直接用常规的ng-click绑定$scope方法会找不到,而且要访问当前行数据得用模板内置的对象。下面给你具体的解决步骤:

1. 修复ng-click失效问题

要在隔离作用域中调用父作用域(也就是你的MainCtrl的$scope)里的方法,需要通过grid.appScope来访问——这是ui-grid专门提供的、指向父作用域的引用,通过它就能调用你在控制器里定义的方法了。

2. 访问当前行对应的数据

可展开模板里可以直接使用row.entity来获取当前展开行的实体数据,这个是ui-grid自动注入到模板作用域中的对象,能直接拿到该行的所有字段。

完整代码示例

先处理模板部分(两种方式任选其一)

方式一:用ng-template定义模板

<div ui-grid="gridOptions" ui-grid-expandable ui-grid-selection class="grid"></div>

<!-- 可展开模板 -->
<script type="text/ng-template" id="expandableTemplate.html">
  <div class="expandable-content">
    <!-- 通过grid.appScope调用控制器方法,同时传入当前行数据 -->
    <button ng-click="grid.appScope.showdiv(row.entity)">点击操作当前行</button>
    <!-- 直接展示当前行数据示例 -->
    <p>当前行ID:{{row.entity.id}}</p>
    <p>当前行名称:{{row.entity.name}}</p>
  </div>
</script>

方式二:直接在gridOptions里定义字符串模板

$scope.gridOptions.expandableRowTemplate = `
  <div style="padding:10px;">
    <button ng-click="grid.appScope.showdiv(row.entity)">操作按钮</button>
    <p>当前行数据:{{row.entity | json}}</p>
  </div>
`;

然后修改控制器代码

var app = angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.expandable', 'ui.grid.selection', 'ui.grid.pinning']); 

app.controller('MainCtrl', ['$scope', '$http', '$log', '$timeout', function ($scope, $http, $log, $timeout) { 
  // 初始化grid配置
  $scope.gridOptions = {
    expandableRowTemplate: 'expandableTemplate.html', // 如果用方式二就替换成字符串模板
    expandableRowHeight: 180,
    columnDefs: [
      // 这里放你的列定义,比如:
      { name: 'id' },
      { name: 'name' }
    ]
  };

  // 修改你的showdiv方法,接收当前行数据作为参数
  $scope.showdiv = function(currentRowData) {
    $log.log('当前点击的行数据:', currentRowData);
    // 这里写你的业务逻辑,比如显示div、操作数据等
  };

  // 加载数据的逻辑(示例)
  $http.get('/your-data-url').then(function(res) {
    $scope.gridOptions.data = res.data;
  });
}]);

关键注意点

  • 模板中的row和grid都是ui-grid自动提供的作用域变量,不需要你自己定义或传递。
  • 如果你的方法需要修改$scope里的变量,直接在grid.appScope后调用即可,作用域会自动关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:23:06