首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角指令测试在封装后失败

角指令测试在封装后失败
EN

Stack Overflow用户
提问于 2016-01-26 06:04:39
回答 1查看 80关注 0票数 1

在阅读了约翰·爸爸的“AngularJS IIFE风格指南”之后,我开始用IIFE包装我所有的文件。当我把我的菜单指令文件打包在生活中时,我遇到了一个问题。测试失败,声称我的menubar指令的控制器是未定义的。

ReferenceError: MenubarController不是在对象处定义的。(/Users/eso/dev/Prismo/frontend/prismo-frontend/app/menubar/directives_test.js:9:2473) at Object.invoke (/Users/eso/dev/Prismo/frontend/prismo-frontend/app/bower_components/angular/angular.js:9:139719) at Object.workFn (/Users/eso/dev/Prismo/frontend/prismo-frontend/app/bower_components/angular-mocks/angular-mocks.js:9:69713) TypeError::无法读取未定义的对象的属性“loadCurrentUser”。(/Users/eso/dev/Prismo/frontend/prismo-frontend/app/menubar/directives_test.js:9:3634)错误:未刷新请求:1 at Function.$httpBackend.verifyNoOutstandingRequest (/Users/eso/dev/Prismo/frontend/prismo-frontend/app/bower_components/angular-mocks/angular-mocks.js:9:45282) at Object。(/Users/eso/dev/Prismo/frontend/prismo-frontend/app/menubar/directives_test.js:9:2853)

我的代码太长,无法在这里发布;我提供了一个指向github回购提交的链接:

脑膜directives.js文件

测试在生命之前通过,但在加入生命之后失败。然而,其他测试都通过了;所有其他控制器、服务等等,即使在添加了IIFE之后。有什么想法吗?

编辑:请注意,构建应用程序并将其部署会导致一个正常运行的应用程序,没有任何错误。menubar指令按预期呈现和工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-26 10:04:49

因为指令是封装在iife上的,所以您无法访问MenubarController对象关于考试。使用字符串代替:

代码语言:javascript
复制
ctrl = controller('MenubarController', deps, data);

在指令文件中,必须以相同的名称在角模块中注册控制器,并将其按字符串添加到指令中:

代码语言:javascript
复制
.directive('menubar', function() {
    return {
      templateUrl: 'menubar/menubar.html',
      restrict: 'E',
      scope: {},
      bindToController: {
        appname: '=',
        tabs: '='
      },
      controller: 'MenubarController',
      controllerAs: 'vm'
    };
  })
  .controller('MenubarController', MenubarController)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35007875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档