Skip to content

Commit 641f992

Browse files
committed
Set up an event listener on {appFrame}.document.body if the angular-scenario.angularInit() fails to connect.
Make sure the manual bootstrap fires the above event.
1 parent dd547fa commit 641f992

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

app/lib/angular/angular.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -893,8 +893,9 @@ function encodeUriQuery(val, pctEncodeSpaces) {
893893
</doc:example>
894894
*
895895
*/
896-
function angularInit(element, bootstrap) {
896+
function angularInit(element, callback, errCallback) {
897897
var elements = [element],
898+
document = element.ownerDocument || element,
898899
appElement,
899900
module,
900901
names = ['ng:app', 'ng-app', 'x-ng-app', 'data-ng-app'],
@@ -933,7 +934,9 @@ function angularInit(element, bootstrap) {
933934
}
934935
});
935936
if (appElement) {
936-
bootstrap(appElement, module ? [module] : []);
937+
callback(appElement, module ? [module] : []);
938+
} else if (callback !== bootstrap && errCallback) {
939+
errCallback();
937940
}
938941
}
939942

@@ -968,6 +971,10 @@ function bootstrap(element, modules) {
968971
var cls = ': ' + modules[2] + ';';
969972
cls = 'ng-app' + (cls||'');
970973
element.addClass(cls);
974+
975+
// ..when it has already run.
976+
var document = element[0].ownerDocument || element[0];
977+
JQLite(document.body).triggerHandler('ngBootstrap');
971978
});
972979
}]
973980
);

test/lib/angular/angular-scenario.js

+15-3
Original file line numberDiff line numberDiff line change
@@ -10298,8 +10298,9 @@ function encodeUriQuery(val, pctEncodeSpaces) {
1029810298
</doc:example>
1029910299
*
1030010300
*/
10301-
function angularInit(element, bootstrap) {
10301+
function angularInit(element, callback, errCallback) {
1030210302
var elements = [element],
10303+
document = element.ownerDocument || element,
1030310304
appElement,
1030410305
module,
1030510306
names = ['ng:app', 'ng-app', 'x-ng-app', 'data-ng-app'],
@@ -10338,7 +10339,9 @@ function angularInit(element, bootstrap) {
1033810339
}
1033910340
});
1034010341
if (appElement) {
10341-
bootstrap(appElement, module ? [module] : []);
10342+
callback(appElement, module ? [module] : []);
10343+
} else if (callback !== bootstrap && errCallback) {
10344+
errCallback();
1034210345
}
1034310346
}
1034410347

@@ -10373,6 +10376,10 @@ function bootstrap(element, modules) {
1037310376
var cls = ': ' + modules[2] + ';';
1037410377
cls = 'ng-app' + (cls||'');
1037510378
element.addClass(cls);
10379+
10380+
// ..when it has already run.
10381+
var document = element[0].ownerDocument || element[0];
10382+
JQLite(document.body).triggerHandler('ngBootstrap');
1037610383
});
1037710384
}]
1037810385
);
@@ -24637,7 +24644,7 @@ angular.scenario.Application.prototype.executeAction = function(action) {
2463724644
if (!$window.angular) {
2463824645
return action.call(this, $window, _jQuery($window.document));
2463924646
}
24640-
angularInit($window.document, function(element) {
24647+
var scenarioBootstrap = function(element) {
2464124648
var $injector = $window.angular.element(element).injector();
2464224649
var $element = _jQuery(element);
2464324650

@@ -24650,6 +24657,11 @@ angular.scenario.Application.prototype.executeAction = function(action) {
2465024657
action.call(self, $window, $element);
2465124658
});
2465224659
});
24660+
};
24661+
angularInit($window.document, scenarioBootstrap, function(){
24662+
$window.angular.element($window.document.body).bind('ngBootstrap', function(){
24663+
angularInit($window.document, scenarioBootstrap);
24664+
});
2465324665
});
2465424666
};
2465524667

0 commit comments

Comments
 (0)