diff --git a/src/ng/directive/ngInclude.js b/src/ng/directive/ngInclude.js index 45800e758d4e..730c7bdf08bd 100644 --- a/src/ng/directive/ngInclude.js +++ b/src/ng/directive/ngInclude.js @@ -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(); } diff --git a/test/ng/directive/ngIncludeSpec.js b/test/ng/directive/ngIncludeSpec.js index a990a840ed54..1ce55bb43939 100644 --- a/test/ng/directive/ngIncludeSpec.js +++ b/test/ng/directive/ngIncludeSpec.js @@ -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('')($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) {