From a7fbaac5db69c86304a3c689f0c3c87a70dae220 Mon Sep 17 00:00:00 2001 From: Max Lynch Date: Wed, 2 Oct 2013 19:47:21 -0500 Subject: [PATCH] Angular tests running, content scoping --- Gruntfile.js | 3 +- dist/ionic-angular.js | 25 +++++---- ionic.conf.js | 15 +++--- js/ext/angular/src/directive/ionicContent.js | 20 +++---- js/ext/angular/test/content.html | 57 ++++++++++++++++++++ js/ext/angular/test/ionicContent.unit.js | 5 ++ 6 files changed, 95 insertions(+), 30 deletions(-) create mode 100644 js/ext/angular/test/content.html diff --git a/Gruntfile.js b/Gruntfile.js index 3883ecf444..7a4371e5cd 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -32,7 +32,8 @@ module.exports = function(grunt) { }, distAngular: { src: [ - 'js/ext/angular/src/**/*.js' + 'js/ext/angular/src/ionicAngular.js', + 'js/ext/angular/src/directive/**/*.js' ], dest: 'dist/<%= pkg.name %>-angular.js' }, diff --git a/dist/ionic-angular.js b/dist/ionic-angular.js index eeb23a5a6b..d2f4aef35e 100644 --- a/dist/ionic-angular.js +++ b/dist/ionic-angular.js @@ -1,3 +1,5 @@ +angular.module('ionic.ui', ['ionic.ui.content', 'ionic.ui.tabs', 'ionic.ui.nav', 'ionic.ui.sideMenu']); +; angular.module('ionic.ui.content', {}) // The content directive is a core scrollable content area @@ -6,18 +8,18 @@ angular.module('ionic.ui.content', {}) return { restrict: 'E', replace: true, - transclude: true, - scope: true, - template: '
', - compile: function(element, attr, transclude, navCtrl) { + scope: false, + compile: function(element, attr, transclude) { return function($scope, $element, $attr) { - $scope.hasHeader = attr.hasHeader; - $scope.hasTabs = attr.hasTabs; + $element.addClass('content'); - var newScope = $scope.$parent.$new(); - - $element.append(transclude(newScope)); - }; + if(attr.hasHeader) { + $element.addClass('has-header'); + } + if(attr.hasTabs) { + $element.addClass('has-tabs'); + } + } } } }) @@ -83,7 +85,6 @@ angular.module('ionic.ui.nav', []) '

{{getTopController().title}}

' + '', link: function(scope, element, attrs, navCtrl) { - scope.isHidden = attrs.hidden; scope.goBack = function() { navCtrl.pop(); } @@ -319,5 +320,3 @@ angular.module('ionic.ui.tabs', []) '' } }); -; -angular.module('ionic.ui', ['ionic.ui.content', 'ionic.ui.tabs', 'ionic.ui.nav', 'ionic.ui.sideMenu']); diff --git a/ionic.conf.js b/ionic.conf.js index 44ee9c0481..e80b880401 100644 --- a/ionic.conf.js +++ b/ionic.conf.js @@ -14,17 +14,20 @@ module.exports = function(config) { // list of files / patterns to load in the browser files: [ - // Include jQuery only for testing convience (lots of DOM checking for unit tests on directives) 'https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', - 'vendor/angular/1.2.0rc1/*', + 'https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.min.js', + 'https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular-mocks.js', + 'https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular-touch.js', + 'https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular-animate.js', + 'dist/ionic.js', + 'dist/ionic-angular.js', + 'test/**/*.js', - //'ext/angular/src/**/*.js', - //'ext/angular/test/**/*.js', - //'hacking/**/*.js', - //'test/**/*.js' + + 'js/ext/angular/test/**/*.js' ], diff --git a/js/ext/angular/src/directive/ionicContent.js b/js/ext/angular/src/directive/ionicContent.js index 86969c7d4b..424a988221 100644 --- a/js/ext/angular/src/directive/ionicContent.js +++ b/js/ext/angular/src/directive/ionicContent.js @@ -6,18 +6,18 @@ angular.module('ionic.ui.content', {}) return { restrict: 'E', replace: true, - transclude: true, - scope: true, - template: '
', - compile: function(element, attr, transclude, navCtrl) { + scope: false, + compile: function(element, attr, transclude) { return function($scope, $element, $attr) { - $scope.hasHeader = attr.hasHeader; - $scope.hasTabs = attr.hasTabs; + $element.addClass('content'); - var newScope = $scope.$parent.$new(); - - $element.append(transclude(newScope)); - }; + if(attr.hasHeader) { + $element.addClass('has-header'); + } + if(attr.hasTabs) { + $element.addClass('has-tabs'); + } + } } } }) diff --git a/js/ext/angular/test/content.html b/js/ext/angular/test/content.html new file mode 100644 index 0000000000..1b6455fb87 --- /dev/null +++ b/js/ext/angular/test/content.html @@ -0,0 +1,57 @@ + + + + Nav Bars + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/ext/angular/test/ionicContent.unit.js b/js/ext/angular/test/ionicContent.unit.js index 5ae6923660..be6d7eb2f6 100644 --- a/js/ext/angular/test/ionicContent.unit.js +++ b/js/ext/angular/test/ionicContent.unit.js @@ -12,4 +12,9 @@ describe('Ionic Content directive', function() { element = compile('')(scope); expect(element.hasClass('content')).toBe(true); }); + + it('Has header', function() { + element = compile('')(scope); + expect(element.hasClass('has-header')).toEqual(true); + }); });