gpt4 book ai didi

javascript - 如何在不覆盖父范围的情况下将参数传递给指令?

转载 作者:可可西里 更新时间:2023-11-01 02:44:34 28 4
gpt4 key购买 nike

我需要创建一个指令,该指令作用于使用 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', function ($timeout) {
return {
restrict: 'A',
scope: {
columnselector: '@',
$last: '=$last',
},
link: function (scope, element, attr) {
if (scope.$last === true) {
....

作用域的第二个参数将通过引用传递 $last 参数。

编辑:

由于 $last 仅在 repeat 元素的范围内可用,您可以从元素范围中获取它,如下所示

'use strict';

angular.module('cmt.cases.directives')

.directive('fixedColumnTooltip', function ($timeout) {
return {
srestrict: 'A',
scope: {
columnselector: '@',
},
link: function (scope, element, attrs) {
var elemScope = element.scope();
if (elemScope.$last){
......
}
}
}

关于javascript - 如何在不覆盖父范围的情况下将参数传递给指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34686076/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com