aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIgor Minar2012-03-08 15:42:35 -0800
committerIgor Minar2012-03-08 22:29:35 -0800
commit5d09a1efd3ff98fc2fbba2f8f64230704f4a5e96 (patch)
treea978ec1d082ee4e34a01090665f5ae59dc17377f /src
parentf54db2ccda399f2677e4ca7588018cb31545a2b4 (diff)
downloadangular.js-5d09a1efd3ff98fc2fbba2f8f64230704f4a5e96.tar.bz2
fix(ng-view, ng-include): onload and $contentLoaded
- change custom onload directive to special arguments recongnized by both ng-view and ng-include - rename $contentLoaded event to $viewContentLoaded and $includeContentLoaded - add event docs
Diffstat (limited to 'src')
-rw-r--r--src/AngularPublic.js1
-rw-r--r--src/directive/ngInclude.js14
-rw-r--r--src/directive/ngView.js30
3 files changed, 28 insertions, 17 deletions
diff --git a/src/AngularPublic.js b/src/AngularPublic.js
index 8ee8bc06..5bc59653 100644
--- a/src/AngularPublic.js
+++ b/src/AngularPublic.js
@@ -69,7 +69,6 @@ function publishExternalAPI(angular){
script: scriptDirective,
select: selectDirective,
style: styleDirective,
- onload: onloadDirective,
option: optionDirective,
ngBind: ngBindDirective,
ngBindHtml: ngBindHtmlDirective,
diff --git a/src/directive/ngInclude.js b/src/directive/ngInclude.js
index 08b14488..68a03d35 100644
--- a/src/directive/ngInclude.js
+++ b/src/directive/ngInclude.js
@@ -63,6 +63,16 @@
</doc:scenario>
</doc:example>
*/
+
+
+/**
+ * @ngdoc event
+ * @name angular.module.ng.$compileProvider.directive.ng:include#$includeContentLoaded
+ * @eventOf angular.module.ng.$compileProvider.directive.ng:include
+ * @eventType emit on the current ng:include scope
+ * @description
+ * Emitted every time the ng:include content is reloaded.
+ */
var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile',
function($http, $templateCache, $anchorScroll, $compile) {
return {
@@ -70,6 +80,7 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
compile: function(element, attr) {
var srcExp = attr.src,
scopeExp = attr.scope || '',
+ onloadExp = attr.onload || '',
autoScrollExp = attr.autoscroll;
return function(scope, element, attr) {
@@ -106,7 +117,8 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
if (isDefined(autoScrollExp) && (!autoScrollExp || scope.$eval(autoScrollExp))) {
$anchorScroll();
}
- scope.$emit('$contentLoaded');
+ scope.$emit('$includeContentLoaded');
+ scope.$eval(onloadExp);
}
}).error(clearContent);
} else {
diff --git a/src/directive/ngView.js b/src/directive/ngView.js
index 3c589354..74528ad9 100644
--- a/src/directive/ngView.js
+++ b/src/directive/ngView.js
@@ -93,6 +93,16 @@
</doc:scenario>
</doc:example>
*/
+
+
+/**
+ * @ngdoc event
+ * @name angular.module.ng.$compileProvider.directive.ng:view#$viewContentLoaded
+ * @eventOf angular.module.ng.$compileProvider.directive.ng:view
+ * @eventType emit on the current ng:view scope
+ * @description
+ * Emitted every time the ng:view content is reloaded.
+ */
var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$compile',
'$controller',
function($http, $templateCache, $route, $anchorScroll, $compile,
@@ -100,9 +110,10 @@ var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$c
return {
restrict: 'ECA',
terminal: true,
- link: function(scope, element) {
+ link: function(scope, element, attr) {
var changeCounter = 0,
- lastScope;
+ lastScope,
+ onloadExp = attr.onload || '';
scope.$on('$afterRouteChange', function(event, next, previous) {
changeCounter++;
@@ -142,7 +153,8 @@ var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$c
}
link(lastScope);
- lastScope.$emit('$contentLoaded');
+ lastScope.$emit('$viewContentLoaded');
+ lastScope.$eval(onloadExp);
// $anchorScroll might listen on event...
$anchorScroll();
@@ -155,15 +167,3 @@ var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$c
}
};
}];
-
-
-var onloadDirective = valueFn({
- restrict: 'AC',
- link: function(scope, elm, attr) {
- var onloadExp = attr.onload || ''; //workaround for jquery bug #7537)
-
- scope.$on('$contentLoaded', function(event) {
- scope.$eval(onloadExp);
- });
- }
-});