diff options
| author | Matthieu Larcher | 2013-05-02 21:12:00 +0200 |
|---|---|---|
| committer | Pete Bacon Darwin | 2013-05-03 19:55:47 +0100 |
| commit | af0eaa304748f330739a4b0aadb13201126c5407 (patch) | |
| tree | b6780f190feab2e12ba2eabd292f9290ead78900 | |
| parent | a348e90aa141921b914f87ec930cd6ebf481a446 (diff) | |
| download | angular.js-af0eaa304748f330739a4b0aadb13201126c5407.tar.bz2 | |
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.
| -rw-r--r-- | src/ng/directive/ngInclude.js | 11 | ||||
| -rw-r--r-- | test/ng/directive/ngIncludeSpec.js | 16 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/ng/directive/ngInclude.js b/src/ng/directive/ngInclude.js index 45800e75..730c7bdf 100644 --- a/src/ng/directive/ngInclude.js +++ b/src/ng/directive/ngInclude.js @@ -116,6 +116,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 * @eventOf ng.directive:ngInclude * @eventType emit on the current ngInclude scope @@ -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 a990a840..1ce55bb4 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('<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) { |
