Skip to content

Commit 9187f14

Browse files
authored
Merge pull request allenhwkim#800 from privatejava/master
fixed bug of ng-repeat multiple times compiled by angular inside of custom control
2 parents 9b0b6dc + 1cebf01 commit 9187f14

File tree

7 files changed

+210
-177
lines changed

7 files changed

+210
-177
lines changed

build/docs/source/custom-control.html

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,18 @@
3333
var filtered = parser.filter(attrs);
3434
var options = parser.getOptions(filtered, {scope: scope});
3535
var events = parser.getEvents(scope, filtered);
36+
var innerScope = scope.$new();
3637
/**
3738
* build a custom control element
3839
*/
3940
var customControlEl = element[0].parentElement.removeChild(element[0]);
40-
var content = $transclude();
41-
angular.element(customControlEl).append(content);
41+
var content = $transclude( innerScope, function( clone ) {
42+
element.empty();
43+
element.append( clone );
44+
element.on( '$destroy', function() {
45+
innerScope.$destroy();
46+
});
47+
});
4248
/**
4349
* set events
4450
*/

build/scripts/ng-map.debug.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,13 +411,20 @@ angular.module('ngMap', []);
411411
var filtered = parser.filter(attrs);
412412
var options = parser.getOptions(filtered, {scope: scope});
413413
var events = parser.getEvents(scope, filtered);
414+
var innerScope = scope.$new();
414415

415416
/**
416417
* build a custom control element
417418
*/
418419
var customControlEl = element[0].parentElement.removeChild(element[0]);
419-
var content = $transclude();
420-
angular.element(customControlEl).append(content);
420+
var content = $transclude( innerScope, function( clone ) {
421+
element.empty();
422+
element.append( clone );
423+
element.on( '$destroy', function() {
424+
innerScope.$destroy();
425+
});
426+
});
427+
421428

422429
/**
423430
* set events

build/scripts/ng-map.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,13 +420,20 @@ angular.module('ngMap', []);
420420
var filtered = parser.filter(attrs);
421421
var options = parser.getOptions(filtered, {scope: scope});
422422
var events = parser.getEvents(scope, filtered);
423+
var innerScope = scope.$new();
423424

424425
/**
425426
* build a custom control element
426427
*/
427428
var customControlEl = element[0].parentElement.removeChild(element[0]);
428-
var content = $transclude();
429-
angular.element(customControlEl).append(content);
429+
var content = $transclude( innerScope, function( clone ) {
430+
element.empty();
431+
element.append( clone );
432+
element.on( '$destroy', function() {
433+
innerScope.$destroy();
434+
});
435+
});
436+
430437

431438
/**
432439
* set events

build/scripts/ng-map.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/scripts/ng-map.no-dependency.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,13 +420,20 @@ angular.module('ngMap', []);
420420
var filtered = parser.filter(attrs);
421421
var options = parser.getOptions(filtered, {scope: scope});
422422
var events = parser.getEvents(scope, filtered);
423+
var innerScope = scope.$new();
423424

424425
/**
425426
* build a custom control element
426427
*/
427428
var customControlEl = element[0].parentElement.removeChild(element[0]);
428-
var content = $transclude();
429-
angular.element(customControlEl).append(content);
429+
var content = $transclude( innerScope, function( clone ) {
430+
element.empty();
431+
element.append( clone );
432+
element.on( '$destroy', function() {
433+
innerScope.$destroy();
434+
});
435+
});
436+
430437

431438
/**
432439
* set events

directives/custom-control.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,20 @@
3434
var filtered = parser.filter(attrs);
3535
var options = parser.getOptions(filtered, {scope: scope});
3636
var events = parser.getEvents(scope, filtered);
37+
var innerScope = scope.$new();
3738

3839
/**
3940
* build a custom control element
4041
*/
4142
var customControlEl = element[0].parentElement.removeChild(element[0]);
42-
$transclude(scope, function(clone) {
43-
angular.element(customControlEl).append(clone);
43+
var content = $transclude( innerScope, function( clone ) {
44+
element.empty();
45+
element.append( clone );
46+
element.on( '$destroy', function() {
47+
innerScope.$destroy();
48+
});
4449
});
50+
4551

4652
/**
4753
* set events

0 commit comments

Comments
 (0)