测试时如何访问指令中的attr-Angularjs
How do I access the attr in a directive when testing - Angularjs
我有一个指令正在尝试测试。这是指令:
App.directive('resize', function($animate) {
return function(scope, element, attrs) {
scope.$watch(attrs.resize, function(newVal) {
if(newVal) {
$animate.addClass(element, 'span8');
}
});
};
});
这是我的测试:
describe('resize', function() {
var element, scope;
beforeEach(inject(function($compile, $rootScope) {
var directive = angular.element('<div class="span12" resize="isHidden"></div>');
element = $compile(directive)($rootScope);
$rootScope.$digest();
scope = $rootScope;
}));
it('should change to a span8 after resize', function() {
expect($(element).hasClass('span12')).toBeTruthy();
expect($(element).hasClass('span8')).toBeFalsy();
element.scope.newVal = 'changed';
scope.$apply();
expect($(element).hasClass('span8')).toBeTruthy();
});
});
我正在尝试访问我的attrs
变量,更改它,$apply
,并查看class
是否按预期进行了更改。我无法更改attrs
。实际上,我甚至找不到访问它的方法。我如何在测试中访问attrs
?
element
是一个jqLite对象,或者是一个普通的jQuery对象(如果在AngularJS之前加载jQuery)。只需使用.attr()
方法:
it('should do something on attr change', function(){
element.attr('resize', 'newValue');
$scope.$apply();
});
不需要将元素包装在一个新的jQuery对象中:$(element)
就可以使用.hasClass(value)
方法
相关文章:
- 将JSON对象传递给angular指令
- Angular指令在alertify setContent内容中不起作用
- 使用指令的angular js中的Like和different
- 滚动指令在Angular JS中不起作用
- Angularjs:使用angular指令修改angular表达式提供的内部html内容
- 与 rootScope 交互的指令在 Angular JS 中不起作用
- 角度ng-repeat不更新,当使用jQuery内部指令调用Angular 方法时
- 如何使用指令在Angular中加载外部模板
- 如何编译angular指令中的新元素.attr()
- 自定义指令中Angular属性的困惑
- Angular指令到Angular 1.5组件
- 使用指令式Angular JS动态改变文本的颜色
- 像ng-click、ng-onmoseover这样的指令在angular控制器生成的子元素中不起作用
- 如何在指令被angular处理之前移除它
- {{警报更新.currentPage}} in指令在angular-route中每修改一次路由
- 如何允许一个指令从Angular Material的多个输入中被使用
- 排序指令的Angular架构
- 自定义指令attr绑定不起作用
- 我可以合并Angular Strap's "指令到Angular UI中
- 指令在angular 2中的执行顺序