diff --git a/js/angular/controller/navViewController.js b/js/angular/controller/navViewController.js index 88d693c6fca..05bc2de5653 100644 --- a/js/angular/controller/navViewController.js +++ b/js/angular/controller/navViewController.js @@ -267,6 +267,9 @@ function($scope, $element, $attrs, $compile, $controller, $ionicNavBarDelegate, if (viewLocals && viewLocals.$$controller) { viewLocals.$scope = viewScope; var controller = $controller(viewLocals.$$controller, viewLocals); + if (viewLocals.$$controllerAs) { + viewScope[viewLocals.$$controllerAs] = controller; + } $element.children().data('$ngControllerController', controller); } diff --git a/test/unit/angular/controller/navViewController.unit.js b/test/unit/angular/controller/navViewController.unit.js index caf2010b897..3aab24ee6ea 100644 --- a/test/unit/angular/controller/navViewController.unit.js +++ b/test/unit/angular/controller/navViewController.unit.js @@ -81,5 +81,26 @@ describe('$ionicNavView controller', function() { expect(navBarCtrl.title()).toBe('My title'); })); + it('should support controllerAs syntax', inject(function($rootScope, $compile) { + var containerEle = angular.element('
'); + var navBarEle = angular.element(''); + var navViewEle = angular.element(''); + var innerElement = angular.element(''); + + containerEle.append(navBarEle); + navBarEle.append(navViewEle); + + $compile(containerEle)($rootScope); + + var navViewCtrl = navViewEle.data('$ionNavViewController'); + var navViewScope = navViewEle.scope(); + + var ViewCtrlConstructor = jasmine.createSpy('ViewCtrlConstructor'); + navViewCtrl.appendViewElement(innerElement, {$$controller: ViewCtrlConstructor, $$controllerAs: 'vm'}); + + var innerScope = innerElement.scope(); + expect(ViewCtrlConstructor).toHaveBeenCalled(); + expect(innerScope.vm instanceof ViewCtrlConstructor).toBeTruthy(); + })); });