微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/js/152259.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐