gpt4 book ai didi

jquery - AngularJs/在 jasmine 测试中使用 jquery 选择器不起作用

转载 作者:行者123 更新时间:2023-12-01 06:48:04 24 4
gpt4 key购买 nike

假设 Jasmine 测试在 beforeEach block 中公开此代码:

//....
element = $compile('<input class="form-control" class="email" name="email" id="email" type="email" ng-model="user.email" />')($rootScope);
$rootScope.$digest();
//.....

在一些测试中,我做了一个简单的:

console.log($('#email').name);

因此期望值的输出:email

但是,我得到一个未定义

所以我的问题是:默认情况下 jquery 是否兼容(没有 jasmine-jquery 插件或其他任何东西)?当然,在我的 karma 配置中,jquery 在 angularjs 之前加载。

当然,传递传统的 element.find(...) 效果很好(尽管仅适用于标记名),但我想改用 Jquery 选择器。

最佳答案

jQuery id 选择器使用 document.getElementById()。您编译的元素不是 DOM 的一部分,这就是为什么 console.log($('#email').name); 给出 undefined

如果您有一个像示例中那样的元素,您只需执行以下操作:

console.log(element.attr('name'));

只要你在 AngularJS find 之前加载了 jQuery,就可以处理多个标签名称。因此,如果您有嵌套元素:

var nestedElement = $compile('<div><input class="form-control" class="email" name="email" id="email" type="email" ng-model="user.email" /></div>')($scope);

你可以:

console.log(nestedElement.find('#email').attr('name'));

工作示例:http://plnkr.co/edit/KRmoWRq8efvb4QhwDXAX?p=preview

关于jquery - AngularJs/在 jasmine 测试中使用 jquery 选择器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20238715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com