Skip to content
This repository was archived by the owner on Feb 28, 2022. It is now read-only.

Commit 4e2d9a8

Browse files
committed
fix: better handle scope apply on event callback
1 parent 1399df3 commit 4e2d9a8

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

src/leaflet.service.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ function LeafletService($compile) {
55
this.on = function(event, callback, map, scope) {
66
map.on(event, function (e) {
77
callback(e);
8-
if (!scope.$$phase) {
8+
if (scope.$root.$$phase != '$apply' && scope.$root.$$phase != '$digest') {
99
scope.$apply();
1010
}
1111
});

src/leaflet.service.spec.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ ngDescribe({
3333
};
3434
var scope = {'$on': function (event, callback) {
3535
eventRegistry[event] = callback;
36-
}, '$apply': function () {
36+
}, '$root': {}, '$apply': function () {
3737
isApplyed = true;
3838
}};
3939

@@ -56,10 +56,18 @@ ngDescribe({
5656

5757
iscallbackCalled = false;
5858
isApplyed = false;
59-
scope.$$phase = true; //mark that already in digest
59+
scope.$root = {'$$phase': '$apply'}; //mark that already in digest
6060
eventRegistry.click(data);
6161
expect(iscallbackCalled).toBe(true);
6262
expect(isApplyed).toBe(false);
63+
64+
iscallbackCalled = false;
65+
isApplyed = false;
66+
scope.$root = {'$$phase': '$digest'}; //mark that already in digest
67+
eventRegistry.click(data);
68+
expect(iscallbackCalled).toBe(true);
69+
expect(isApplyed).toBe(false);
70+
6371
});
6472
}
6573

0 commit comments

Comments
 (0)