feat(ngInclude): $includeContentRequested event

Adding a $includeContentRequested event in order to better keep track of
how many includes are sent and be able to compare it with how many have
finished.
This commit is contained in:
Matthieu Larcher 2013-05-02 21:12:00 +02:00 committed by Pete Bacon Darwin
parent a348e90aa1
commit af0eaa3047
2 changed files with 27 additions and 0 deletions

View file

@ -114,6 +114,16 @@
*/
/**
* @ngdoc event
* @name ng.directive:ngInclude#$includeContentRequested
* @eventOf ng.directive:ngInclude
* @eventType emit on the scope ngInclude was declared in
* @description
* Emitted every time the ngInclude content is requested.
*/
/**
* @ngdoc event
* @name ng.directive:ngInclude#$includeContentLoaded
@ -170,6 +180,7 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
}).error(function() {
if (thisChangeId === changeCounter) clearContent();
});
scope.$emit('$includeContentRequested');
} else {
clearContent();
}

View file

@ -59,6 +59,22 @@ describe('ngInclude', function() {
expect(element.text()).toEqual('');
}));
it('should fire $includeContentRequested event on scope after making the xhr call', inject(
function ($rootScope, $compile, $httpBackend) {
var contentRequestedSpy = jasmine.createSpy('content requested').andCallFake(function (event) {
expect(event.targetScope).toBe($rootScope);
});
$httpBackend.whenGET('url').respond('my partial');
$rootScope.$on('$includeContentRequested', contentRequestedSpy);
element = $compile('<ng:include src="\'url\'"></ng:include>')($rootScope);
$rootScope.$digest();
expect(contentRequestedSpy).toHaveBeenCalledOnce();
$httpBackend.flush();
}));
it('should fire $includeContentLoaded event on child scope after linking the content', inject(
function($rootScope, $compile, $templateCache) {