我需要创建一个使用ng-repeat来表示表行的表单元格的指令 – 为此,我在
this answer部分依靠一个题为“ng-repeat完成后调用函数”的问题.与Q& A不同的是,我需要通过一个论据到我的指令,为此,我在
this answer部分(题为“Angularjs – 通过参数指令”的问题).
所以在我的情况下,我已经为我的指令添加了fixed-column-tooltip,而columnselector作为< tr>如下:
<tr fixed-column-tooltip columnselector=".td-keyField" ng-repeat="trData in trDataWatch">
但是,在第二个答案中,我补充说,我所学到的是对我的指令的“隔离范围”,根据第一个答案,我不再能访问必要的原始范围:
'use strict'; angular.module('cmt.cases.directives') .directive('fixedColumnTooltip',function ($timeout) { return { restrict: 'A',scope: { columnselector: '@' },link: function (scope,element,attr) { if (scope.$last === true) { //undefined because not operating on original scope ...
有没有办法保持对原始范围的访问权限,还可以访问columnselector参数?
解决方法
你可以使用,
'use strict'; angular.module('cmt.cases.directives') .directive('fixedColumnTooltip',scope: { columnselector: '@',$last: '=$last',},attr) { if (scope.$last === true) { ....
范围的第二个参数将通过引用传递$last参数.
编辑:
由于$last仅在重复元素的范围内可用,所以可以从元素范围获取它,就像这样
'use strict'; angular.module('cmt.cases.directives') .directive('fixedColumnTooltip',function ($timeout) { return { srestrict: 'A',scope: { columnselector: '@',attrs) { var elemScope = element.scope(); if (elemScope.$last){ ...... } } }