aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorCaitlin Potter2013-12-27 20:25:51 -0500
committerIgor Minar2013-12-27 22:45:46 -0800
commit498365f219f65d6c29bdf2f03610a4d3646009bb (patch)
treef0bd42b70c6c150a0cede291dc25d3e7a4ed3b06 /test
parent056c8493521988dbb330c6636135b505737da918 (diff)
downloadangular.js-498365f219f65d6c29bdf2f03610a4d3646009bb.tar.bz2
fix(ngRoute): instantiate controller when template is empty
Before this change, $route controllers are not instantiated if the template is falsy, which includes the empty string. This change tests if the template is not undefined, rather than just falsy, in order to ensure that templates are instantiated even when the template is empty, which people may have some reason to do. This "bug" was reported in http://robb.weblaws.org/2013/06/21/angularjs-vs-emberjs/, as a "gotcha" for AngularJS / ngRoute. Closes #5550
Diffstat (limited to 'test')
-rw-r--r--test/ngRoute/directive/ngViewSpec.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/ngRoute/directive/ngViewSpec.js b/test/ngRoute/directive/ngViewSpec.js
index a8d1f459..cb3455e6 100644
--- a/test/ngRoute/directive/ngViewSpec.js
+++ b/test/ngRoute/directive/ngViewSpec.js
@@ -56,6 +56,29 @@ describe('ngView', function() {
});
+ it('should instantiate controller for empty template', function() {
+ var log = [], controllerScope,
+ Ctrl = function($scope) {
+ controllerScope = $scope;
+ log.push('ctrl-init');
+ };
+
+ module(function($routeProvider) {
+ $routeProvider.when('/some', {templateUrl: '/tpl.html', controller: Ctrl});
+ });
+
+ inject(function($route, $rootScope, $templateCache, $location) {
+ $templateCache.put('/tpl.html', [200, '', {}]);
+ $location.path('/some');
+ $rootScope.$digest();
+
+ expect(controllerScope.$parent).toBe($rootScope);
+ expect(controllerScope).toBe($route.current.scope);
+ expect(log).toEqual(['ctrl-init']);
+ });
+ });
+
+
it('should instantiate controller with an alias', function() {
var log = [], controllerScope,
Ctrl = function($scope) {