1

当我有一个使用控制器的 Angular 指令时,我可以通过执行以下操作在我的测试中访问指令的范围:

element = angular.element('<my-directive></my-directive>');
element = $compile(element)($rootScope);
$rootScope.$digest();

scope = element.scope();

这使我能够设置/获取范围属性并直接调用指令控制器定义的函数。

但是,一旦我将 jQuery 引入项目(我想使用的另一个依赖项需要),它就停止了工作。具体在测试element.scope()是回归undefined。使用开发工具,我可以看到当应用程序真正运行时情况并非如此——即我可以做$('.blah').scope()并取回一个非undefined值。

任何人都知道为什么这不起作用?我已将 jQuery 添加到我的karma.conf.js(我正在使用 Yeoman Angular 生成器)中,其顺序与包含在 HTML 文件中的顺序相同。

4

1 回答 1

1

我发现了问题。我在 PhantomJS 中运行我的测试并引入了 jQuery 2.0.3。降级到 jQuery 1.10.2 让一切都恢复正常。我有点惊讶 PhantomJS 会有兼容性问题,但这似乎是问题所在。

于 2013-09-06T08:28:16.200 回答