diff --git a/js/ext/angular/src/controller/ionicScrollController.js b/js/ext/angular/src/controller/ionicScrollController.js
index 7cb3780523..c395df3749 100644
--- a/js/ext/angular/src/controller/ionicScrollController.js
+++ b/js/ext/angular/src/controller/ionicScrollController.js
@@ -43,7 +43,7 @@ function($scope, scrollViewOptions, $timeout, $window, $$scrollValueCache, $loca
.data('$$ionicScrollController', this);
$parse(scrollViewOptions.controllerBind || '$ionicScrollController')
- .assign($scope.$parent, this);
+ .assign($scope.$parent || $scope, this);
if (!angular.isDefined(scrollViewOptions.bouncing)) {
ionic.Platform.ready(function() {
diff --git a/js/ext/angular/src/directive/ionicBar.js b/js/ext/angular/src/directive/ionicBar.js
index 48d53db217..db5e287837 100644
--- a/js/ext/angular/src/directive/ionicBar.js
+++ b/js/ext/angular/src/directive/ionicBar.js
@@ -124,12 +124,13 @@ function barDirective(isHeader) {
alignTitle: $attr.alignTitle || 'center'
});
+ var el = $element[0];
+ //just incase header is on rootscope
+ var parentScope = $scope.$parent || $scope;
+
$parse($attr.controllerBind ||
(isHeader ? '$ionicHeaderBarController' : '$ionicFooterBarController')
- ).assign($scope, hb);
-
- var el = $element[0];
- var parentScope = $scope.$parent || $scope; //just incase header is on rootscope
+ ).assign(parentScope, hb);
if (isHeader) {
$scope.$watch(function() { return el.className; }, function(value) {
diff --git a/js/ext/angular/src/directive/ionicSideMenu.js b/js/ext/angular/src/directive/ionicSideMenu.js
index d46e9ae1af..f666b1a335 100644
--- a/js/ext/angular/src/directive/ionicSideMenu.js
+++ b/js/ext/angular/src/directive/ionicSideMenu.js
@@ -119,7 +119,8 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture', 'ionic.service.vie
$scope.sideMenuContentTranslateX = 0;
- $parse($attrs.controllerBind || '$ionicSideMenusController').assign($scope, this);
+ $parse($attrs.controllerBind || '$ionicSideMenusController')
+ .assign($scope.$parent || $scope, this);
}],
replace: true,
transclude: true,
diff --git a/js/ext/angular/test/directive/ionicSideMenu.unit.js b/js/ext/angular/test/directive/ionicSideMenu.unit.js
index cd325551eb..acb83e575a 100644
--- a/js/ext/angular/test/directive/ionicSideMenu.unit.js
+++ b/js/ext/angular/test/directive/ionicSideMenu.unit.js
@@ -15,10 +15,10 @@ describe('Ionic Angular Side Menu', function() {
}));
it('should assign sideMenuController with option', inject(function($compile, $rootScope) {
- var el = $compile('')($rootScope);
+ var el = $compile('')($rootScope.$new());
var scope = el.scope();
expect(el.controller('ionSideMenus')).toBeDefined();
- expect(scope.supermodel).toBe(el.controller('ionSideMenus'));
+ expect(scope.$parent.supermodel).toBe(el.controller('ionSideMenus'));
}));
it('should init with custom model attr', function() {