diff options
| author | Igor Minar | 2011-01-19 21:47:14 -0800 |
|---|---|---|
| committer | Igor Minar | 2011-01-19 21:47:14 -0800 |
| commit | 17ee0f031ac4a37bf9a1dc8c87ffac4bd164d1cc (patch) | |
| tree | db799a01074f9b389fc4c069189150381d075df6 | |
| parent | 10646c9f6f62dd5130606d07ffe69770b3973f47 (diff) | |
| download | angular.js-17ee0f031ac4a37bf9a1dc8c87ffac4bd164d1cc.tar.bz2 | |
fix ng:include issue introduced by a5eb3ed1
| -rw-r--r-- | src/widgets.js | 7 | ||||
| -rw-r--r-- | test/widgetsSpec.js | 19 |
2 files changed, 24 insertions, 2 deletions
diff --git a/src/widgets.js b/src/widgets.js index 4585629a..1ab8a2c9 100644 --- a/src/widgets.js +++ b/src/widgets.js @@ -635,7 +635,12 @@ angularWidget('ng:include', function(element){ if (src) { xhr('GET', src, function(code, response){ element.html(response); - childScope = useScope || createScope(scope); + if (useScope) { + childScope = useScope; + } else { + childScope = createScope(scope); + scope.$onEval(childScope.$eval); + } compiler.compile(element)(element, childScope); childScope.$init(); scope.$eval(onloadExp); diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js index 27c5cb82..6ec056ca 100644 --- a/test/widgetsSpec.js +++ b/test/widgetsSpec.js @@ -609,7 +609,24 @@ describe("widget", function(){ }); describe('ng:include', function(){ - it('should include on external file', function() { + it('should include on external file and create a new child scope', function() { + var element = jqLite('<ng:include src="url"></ng:include>'); + var scope = angular.compile(element); + scope.counter = 0; + scope.url = 'myUrl'; + scope.$service('$xhr.cache').data.myUrl = {value:'{{counter = counter + 1}}'}; + scope.$init(); + scope.$service('$browser').defer.flush(); + expect(element.text()).toEqual('2'); + + //should also propagate evals to the child scope + scope.$eval(); + expect(element.text()).toEqual('3'); + + dealoc(scope); + }); + + it('should include on external file and use an existing child scope', function() { var element = jqLite('<ng:include src="url" scope="childScope"></ng:include>'); var scope = angular.compile(element); scope.childScope = createScope(); |
