javascript – 一个参数如何传递给一个指令而不会覆盖父范围?

前端之家收集整理的这篇文章主要介绍了javascript – 一个参数如何传递给一个指令而不会覆盖父范围?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要创建一个使用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){
             ......
      }          
    }
}
原文链接:https://www.f2er.com/js/152259.html

猜你在找的JavaScript相关文章