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