假设在beforeEach
块中公开此代码的茉莉花测试:
//....
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
。
但是,我得到undefined
。
所以我的问题是:默认情况下jquery是否兼容(没有jasmine-jquery插件或其他任何东西)?当然,在我的业力配置中,jquery在angularjs之前加载。
当然,传统的element.find(...)
传递效果很好(虽然只能用于标记名),但我想改用Jquery选择器。
答案 0 :(得分:5)
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'));