У меня есть директива, которую я пытаюсь проверить. Вот директива:Как получить доступ к attr в директиве при тестировании - 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.attr (» resize ',' newvalue ') ', но когда я пытаюсь получить доступ к тому, что' attrs' существует с 'element.attrs()', я получаю 'TypeError: Can not read property' nodeType 'undefined'. Почему это? – jhamm
Мне нужно задать свойство, например 'element.attr ('resize')' – jhamm