Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何模拟具有require字段的angular指令_Javascript_Angularjs_Unit Testing_Angular Directive - Fatal编程技术网

Javascript 如何模拟具有require字段的angular指令

Javascript 如何模拟具有require字段的angular指令,javascript,angularjs,unit-testing,angular-directive,Javascript,Angularjs,Unit Testing,Angular Directive,我最近遇到了这个问题: 我有:指令a,指令b 指令b有一个“require:“^Directive-a”字段,这使得单元测试无法进行 在我的单元测试中,我曾经以这种方式编译指令: element = $compile('<directive-a></directive-a>')($scope); 在本例中,element.isolateScope()返回指令a的作用域,而不是指令b 如何获得指令b的范围 演示: 指令A: (function(){ 'use strict

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

指令b有一个“require:“^Directive-a”字段,这使得单元测试无法进行

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

element = $compile('<directive-a></directive-a>')($scope);
在本例中,
element.isolateScope()
返回指令a的作用域,而不是指令b

如何获得指令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();
let元素=$compile(“”)($scope);
让elementB=element.find('directive-b');
设BsScope=elementB.isolateScope();

回答迟,未经测试

let element = $compile('<directive-a> <directive-b></directive-b> </directive-a>')($scope);
let elementB = element.find('directive-b');
let BsScope = elementB.isolateScope();
let元素=$compile(“”)($scope);
让elementB=element.find('directive-b');
设BsScope=elementB.isolateScope();

谢谢@Huston,但我的问题是如何模拟,而不是如何编译。这是两种不同的解决方案。我更喜欢模仿我的内心指令,而不是执行它。您的问题是关于访问内部指令的范围,这就是我试图回答的问题。如果您还有关于如何模拟内部指令的问题,那么您也应该问这个问题。;-)谢谢@Huston,但我的问题是如何模仿,而不是如何编译。这是两种不同的解决方案。我更喜欢模仿我的内心指令,而不是执行它。您的问题是关于访问内部指令的范围,这就是我试图回答的问题。如果您还有关于如何模拟内部指令的问题,那么您也应该问这个问题。;-)谢谢@Huston,但我的问题是如何模仿,而不是如何编译。这是两种不同的解决方案。我更喜欢模仿我的内心指令,而不是执行它。您的问题是关于访问内部指令的范围,这就是我试图回答的问题。如果您还有关于如何模拟内部指令的问题,那么您也应该问这个问题。;-)