From 38acea337a8d0d2cb49b6c6b15227aba0b69580b Mon Sep 17 00:00:00 2001 From: Andy Joslin Date: Fri, 21 Mar 2014 09:50:09 -0500 Subject: [PATCH] refactor(controllers): assign to parent scope if possible --- js/ext/angular/src/controller/ionicScrollController.js | 2 +- js/ext/angular/src/directive/ionicBar.js | 9 +++++---- js/ext/angular/src/directive/ionicSideMenu.js | 3 ++- js/ext/angular/test/directive/ionicSideMenu.unit.js | 4 ++-- 4 files changed, 10 insertions(+), 8 deletions(-) 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() {