0
我最近已经开始使用茉莉花,我有一个奇怪的情况。我正在测试一个函数,用另一个函数调用进行DOM操作。茉莉花说错误elem.className
不是一个构造函数。这里是我的代码的结构:存根DOM元素在茉莉花,angularjs
控制器代码:
function resetElem(elem) {
elem.classList.remove(/some string/);
}
function a() {
resetElem(document.getElementsByClassName('xx')[0])
}
茉莉花:
var elem;
beforeEach(inject(function($rootScope, $controller, $q) {
deferred = $q.defer();
scope = $rootScope.$new();
mockHTMLElements();
createController($controller);
}));
function mockHTMLElements() {
/* //This was the other method that I tried.
jasmine.spyOn(document,
'getElementsByClassName').and.CallFake(function(name) {
var el;
if (!elems[name]) {
el = document.createElement('div');
el.className = name;
elems[name] = el;
}
return [elems[name]];
});
*/
elems['preview-promo'] = document.createElement('div');
elems['preview-promo'].className="preview-promo";
elems['create-promo'] = document.createElement('div');
elems['create-promo'].className="create-promo";
elem = {
classList : {
add : jasmine.createSpy('add'),
remove : jasmine.createSpy('remove'),
},
className : 'test'
};
}
it('tests the a function', function() {
// vm is ref of this of controller
vm.a(true);
...some other tests
});
控制台返回
TypeError: undefined is not an object (evaluating 'elem.classList')
不知道如何使这一权利。
当有网络请求时,我有条件地添加一个“进度”类。我不确定制定指令是否可行。我将如何有条件地调用指令的链接功能? –
你不会的。使用绑定可以从当前范围控制CSS类。 –
会给它一个镜头。 –