mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-17 07:40:22 +00:00
add onload attribute to ng:include
This commit is contained in:
parent
cc749760fd
commit
a130bb899d
2 changed files with 19 additions and 2 deletions
|
|
@ -494,6 +494,7 @@ angularWidget('option', function(){
|
|||
*
|
||||
* @param {string} src expression evaluating to URL.
|
||||
* @param {Scope=} [scope=new_child_scope] expression evaluating to angular.scope
|
||||
* @param {string=} onload Expression to evaluate when a new partial is loaded.
|
||||
*
|
||||
* @example
|
||||
* <select name="url">
|
||||
|
|
@ -521,7 +522,8 @@ angularWidget('option', function(){
|
|||
angularWidget('ng:include', function(element){
|
||||
var compiler = this,
|
||||
srcExp = element.attr("src"),
|
||||
scopeExp = element.attr("scope") || '';
|
||||
scopeExp = element.attr("scope") || '',
|
||||
onloadExp = element[0].getAttribute('onload') || ''; //workaround for jquery bug #7537
|
||||
if (element[0]['ng:compiled']) {
|
||||
this.descend(true);
|
||||
this.directives(true);
|
||||
|
|
@ -546,13 +548,15 @@ angularWidget('ng:include', function(element){
|
|||
});
|
||||
this.$watch(function(){return changeCounter;}, function(){
|
||||
var src = this.$eval(srcExp),
|
||||
useScope = this.$eval(scopeExp);
|
||||
useScope = this.$eval(scopeExp);
|
||||
|
||||
if (src) {
|
||||
xhr('GET', src, function(code, response){
|
||||
element.html(response);
|
||||
childScope = useScope || createScope(scope);
|
||||
compiler.compile(element)(element, childScope);
|
||||
childScope.$init();
|
||||
scope.$eval(onloadExp);
|
||||
});
|
||||
} else {
|
||||
childScope = null;
|
||||
|
|
|
|||
|
|
@ -532,6 +532,19 @@ describe("widget", function(){
|
|||
// we need to have real events on the scopes.
|
||||
expect(element.text()).toEqual('4');
|
||||
});
|
||||
|
||||
it('should evaluate onload expression when a partial is loaded', function() {
|
||||
var element = jqLite('<ng:include src="url" onload="loaded = true"></ng:include>');
|
||||
var scope = angular.compile(element);
|
||||
|
||||
expect(scope.loaded).not.toBeDefined();
|
||||
|
||||
scope.url = 'myUrl';
|
||||
scope.$inject('$xhr.cache').data.myUrl = {value:'my partial'};
|
||||
scope.$init();
|
||||
expect(element.text()).toEqual('my partial');
|
||||
expect(scope.loaded).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('a', function() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue