gpt4 book ai didi

javascript - 如何模拟具有 require 字段的 Angular Directive(指令)

转载 作者:行者123 更新时间:2023-11-28 07:15:49 25 4
gpt4 key购买 nike

我最近遇到了这个问题:我有:指令-a指令-b

Directive-b 有一个 `require: '^directive-a' 字段,这使得单元测试变得不可能。

我曾经在单元测试中以这种方式编译指令:

element = $compile('<directive-a></directive-a>')($scope);

然后我可以使用 element.isolateScope()

获取隔离范围

但是现在因为 b 依赖于 a,所以我必须这样做:

element = $compile('<directive-a> <directive-b></directive-b> </directive-a>')($scope);

在这种情况下,element.isolateScope() 返回指令 a 的范围而不是指令 b。

如何获取directive-b的范围?

演示:

指令A:

(function(){
'use strict';

function directiveA(){
return {
restrict: 'E',
templateUrl: '/main/templates/directiveA.html',
transclude: true,
scope: {
attr1: '='
},
controller: function($scope){
//code...
},
link: function($scope, element, attrs, ctrl, transclude){
injectContentIntoTemplate();

function injectContentIntoTemplate(){
transclude(function (clone) {
element.find('#specificElement').append(clone);
});
}
}
};
}

angular
.module('myModule')
.directive('directiveA', directiveA);
}());

指令B:

(function(){
'use strict';

function directiveB(){
return {
restrict: 'E',
templateUrl: '/main/templates/directiveA.html',
transclude: true,
replace: true,
scope: {
attr1: '@'
},
require: '^directiveA',
link: function ($scope, element, attrs, ctrl) {
$scope.customVariable = 'something';
}
};
}

angular
.module('myModule')
.directive('directiveB', directiveB);
}());

最佳答案

迟到的答复,且未经测试。

let element = $compile('<directive-a> <directive-b></directive-b> </directive-a>')($scope);
let elementB = element.find('directive-b');
let BsScope = elementB.isolateScope();

关于javascript - 如何模拟具有 require 字段的 Angular Directive(指令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30832214/

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