【发布时间】:2014-01-04 20:41:55
【问题描述】:
我最近在 Angular 的指令中遇到了一些问题,即 jQuery 插件没有被正确清理,因此造成了内存泄漏。
所以,今天,当我进行测试以确保不会发生这种情况时,我意识到没有办法停止观察。
var stopObserving = attrs.$observe('myProperty', function(newValue) {
updateElement(newValue);
});
因为我认为它在 $watch 上的工作方式相同,但显然不是。根据文档,$observe 将返回回调函数,即第二个参数。
我有这个测试:
describe('destroy',function(){
beforeEach(function(){
$scope.$destroy();
});
it('should have emptied the DOM node', function(){
expect(element.text()).toBe('');
});
it('shouldn\'t have any more watchers', function(){
dump(element.data().$scope.$$watchers);
expect(element.data().$scope.$$watchers.length).toBe(0);
});
});
它失败了,因为只有一个观察者。我已经检查并调用了$destroy,因此清洁完成了。但是,我怎样才能摆脱那个观察者呢?
代码在这里,如果你好奇的话:
【问题讨论】:
标签: javascript angularjs angularjs-directive