一尘不染

单元标题中的角度ui-grid事件未触发

angularjs

我在ui网格的columDefs中使用headerCellTemplate(不是ng-
grid,而是新的重写)。在html中,我有一个复选框。本质上,我试图在作为所有复选框的列的标题中添加一个复选框,以便可以检查所有/无。带有复选框的单元格可以正常显示。问题在于标题中复选框中的ng-
change永远不会触发该事件。另外,ng-
model值永远不会改变。查看代码,有一个名为uiGridHeaderCell的指令,因此我必须假定它正在吞噬我的事件以及它自己的作用域,因此它永远不会在我的作用域中设置变量。

可以解决吗?我遇到的每个示例都从未有人尝试从标头中调用自己的方法(即,调用指令范围之外的内容)。


阅读 232

收藏
2020-07-04

共1个答案

一尘不染

在ui-grid中,有一个称为的功能externalScopes可能对您有用。教程在这里

这是新的headerCellTemplate

<div ng-class="{ 'sortable': sortable }">
  <div class="ui-grid-vertical-bar">&nbsp;</div>
  <div class="ui-grid-cell-contents" col-index="renderIndex">
    <input type="checkbox" ng-click="$event.stopPropagation();getExternalScopes().showMe()">{{ col.displayName CUSTOM_FILTERS }}
    <span ui-grid-visible="col.sort.direction" ng-class="{ 'ui-grid-icon-up-dir': col.sort.direction == asc, 'ui-grid-icon-down-dir': col.sort.direction == desc, 'ui-grid-icon-blank': !col.sort.direction }">
&nbsp;
</span>
  </div>
  <div class="ui-grid-column-menu-button" ng-if="grid.options.enableColumnMenus && !col.isRowHeader && col.colDef.enableColumnMenu !== false" class="ui-grid-column-menu-button" ng-click="toggleMenu($event)">
    <i class="ui-grid-icon-angle-down">&nbsp;</i>
  </div>
  <div ng-if="filterable" class="ui-grid-filter-container" ng-repeat="colFilter in col.filters">
    <input type="text" class="ui-grid-filter-input" ng-model="colFilter.term" ng-click="$event.stopPropagation()" ng-attr-placeholder="{{colFilter.placeholder || ''}}" />
    <div class="ui-grid-filter-button" ng-click="colFilter.term = null">
      <i class="ui-grid-icon-cancel right" ng-show="!!colFilter.term">&nbsp;</i> 
      <!-- use !! because angular interprets 'f' as false -->
    </div>
  </div>
</div>

(注意第4行的输入类型复选框)

我还添加$event.stopPropagation()了阻止事件到达基础div的功能。

在HTML中,您必须编写:

<div ui-grid="gridOptions" external-scopes="myViewModel" class="grid"></div>

查看此柱塞以了解更多详细信息

2020-07-04