Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 如何将闭包中定义的指令控制器加载到测试规范中_Javascript_Angularjs - Fatal编程技术网

Javascript 如何将闭包中定义的指令控制器加载到测试规范中

Javascript 如何将闭包中定义的指令控制器加载到测试规范中,javascript,angularjs,Javascript,Angularjs,我已选择根据此问题的公认答案中的选项2创建解决方案: . 我的代码如下所示: (function () { function myCtrl($scope) { //All my controller code. }; myAppModule.directive('myDirective', function($compile, $timeout) { return { restrict: 'E',

我已选择根据此问题的公认答案中的选项2创建解决方案: .

我的代码如下所示:

(function () {

    function myCtrl($scope) {
        //All my controller code.
    };

    myAppModule.directive('myDirective', function($compile, $timeout) {

        return {

            restrict: 'E',

            replace: true,

            controller: myCtrl,

            compile: function(tElement, tAttrs, transclude) {

                return {
                post: function(scope, element, attrs) {
                    //more code and stuff.
                }
            }
        }
    });
})();

我的简单问题是;由于控制器未在模块范围内定义,如何将其加载到测试文件中?

正如答案所述,您必须将上述代码拆分为三个文件:

  • 前缀为所有代码,直到函数myCtrl($scope){
  • 控制器代码
  • 后缀
在构建应用程序时,将这三个文件连接成一个文件,并将结果用于生成代码


对于测试,您只需包含中间文件。这会在测试的全局命名空间中创建控制器。在生产代码中,闭包避免了这种污染。

对,因此我的解决方案无法加载到测试套件中,因为它已包装在闭包中,因此即使在加载时也不可见?在其中c在我自己的代码中,我经常只使用一个符号污染全局名称空间,并将所有内容都放在这个符号中,这只是使用angularjs模块系统的一个变体。