我编写了一个自定义工具提示指令,该指令要求共享控制器函数在获取工具提示和工具提示div本身的元素之间传递数据。所以我有一个“tooltipCtrl”指令放在容器div上,然后是一个“工具提示”指令,我把它放在应该在鼠标悬停上得到工具提示的元素,以及我放在元素上的“tooltipDiv”指令这实际上得到了工具提示。工具提示和tooltipDiv在其定义中都有“require:'^ tooltipCtrl'”。这可能是错误的做法,但它似乎完成了工作。
不幸的是,当我尝试在ng-grid的自定义cellTemplate中使用该指令时,我收到此错误:
错误:[$ compile:ctreq]无法找到指令'tooltip'所需的控制器'tooltipCtrl'!
这是模板定义:
<div tooltip="cell" class="ngCellText"><span ng-cell-text>{{row.getProperty(col.field)}}</span></div>
当我在ng-grid之外使用模板时,不会发生这种情况。 ng-grid在编译模板时是否会做一些奇怪的事情,以致它无法在父元素上找到指令?
以下是整个玩具中的东西: http://plnkr.co/edit/wP1cnhJGiYLP49695RKD
感谢任何指导!
答案 0 :(得分:0)
我认为这与ngGrid指令已关闭范围的事实有关,第3057行:
ngGridDirectives.directive('ngGrid', ['$compile', '$filter', '$templateCache', '$sortService', '$domUtilityService', '$utilityService', '$timeout', '$parse', '$http', '$q', function ($compile, $filter, $templateCache, sortService, domUtilityService, $utils, $timeout, $parse, $http, $q) {
var ngGridDirective = {
scope: true,
compile: function() {