我有一個指令,我在attrs
中傳遞,然後在指令中監視它。一旦attrs
被更改,就會發生動畫。當$watch
被觸發時,我的attrs
始終未定義。
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