У меня есть директива, в которой я передаю код attrs
, а затем он отображается в директиве. После изменения attrs
происходит анимация. Мой attrs
всегда не определен, когда запускается $watch
.
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.attr('resize', 'true');
element.scope().$apply();
expect($(element).hasClass('span8')).toBeTruthy();
});
});
attrs
Когда изменения, мои наблюдатели newValue
неопределен и так ничего не происходит. Что мне нужно сделать, чтобы сделать эту работу? Вот plunker
Не могли бы вы сделать скрипку для этого? – kubuntu
Вместо 'element.attr ('resize', 'true');', попробуйте изменить эту строку на 'element.scope(). Resize = true;'. Это работает? – tennisgent
Нет, это не сработало. Я добавил плункер. – jhamm