Explorar o código

Merge branch 'master' of https://github.com/BabylonJS/Babylon.js

David Catuhe %!s(int64=7) %!d(string=hai) anos
pai
achega
a4ea3b929c

+ 4 - 2
Viewer/src/index.ts

@@ -22,10 +22,12 @@ import { InitTags } from './initializer';
 PromisePolyfill.Apply();
 
 export let disableInit: boolean = false;
-document.addEventListener("DOMContentLoaded", function (event) {
+document.addEventListener("DOMContentLoaded", init);
+function init(event) {
+    document.removeEventListener("DOMContentLoaded", init);
     if (disableInit) return;
     InitTags();
-});
+}
 
 // public API for initialization
 export { InitTags, DefaultViewer, AbstractViewer, viewerManager, mapperManager };

+ 12 - 0
Viewer/src/templateManager.ts

@@ -366,6 +366,12 @@ export class Template {
             request.abort();
         });
 
+        if (this.registeredEvents) {
+            this.registeredEvents.forEach(evt => {
+                evt.htmlElement.removeEventListener(evt.eventName, evt.function);
+            });
+        }
+
         delete this.fragment;
     }
 
@@ -417,7 +423,13 @@ export class Template {
 
                     // if boolean, set the parent as the event listener
                     if (typeof this._configuration.events[eventName] === 'boolean') {
+                        let binding = functionToFire.bind(this, '#' + this.parent.id);
                         this.parent.addEventListener(eventName, functionToFire.bind(this, '#' + this.parent.id), false);
+                        this.registeredEvents.push({
+                            htmlElement: this.parent,
+                            eventName: eventName,
+                            function: binding
+                        });
                     } else if (typeof this._configuration.events[eventName] === 'object') {
                         let selectorsArray: Array<string> = Object.keys(this._configuration.events[eventName] || {});
                         // strict null checl is working incorrectly, must override:

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 10 - 10
dist/preview release/viewer/babylon.viewer.js


+ 15 - 2
dist/preview release/viewer/babylon.viewer.max.js

@@ -94591,11 +94591,13 @@ var initializer_1 = __webpack_require__(34);
 exports.InitTags = initializer_1.InitTags;
 babylonjs_1.PromisePolyfill.Apply();
 exports.disableInit = false;
-document.addEventListener("DOMContentLoaded", function (event) {
+document.addEventListener("DOMContentLoaded", init);
+function init(event) {
+    document.removeEventListener("DOMContentLoaded", init);
     if (exports.disableInit)
         return;
     initializer_1.InitTags();
-});
+}
 
 
 /***/ }),
@@ -94897,6 +94899,11 @@ var Template = (function () {
         this.loadRequests.forEach(function (request) {
             request.abort();
         });
+        if (this.registeredEvents) {
+            this.registeredEvents.forEach(function (evt) {
+                evt.htmlElement.removeEventListener(evt.eventName, evt.function);
+            });
+        }
         delete this.fragment;
     };
     Template.prototype.getTemplateAsHtml = function (templateConfig) {
@@ -94946,7 +94953,13 @@ var Template = (function () {
                         _this.onEventTriggered.notifyObservers({ event: event, template: _this, selector: selector });
                     };
                     if (typeof this_1._configuration.events[eventName] === 'boolean') {
+                        var binding = functionToFire_1.bind(this_1, '#' + this_1.parent.id);
                         this_1.parent.addEventListener(eventName, functionToFire_1.bind(this_1, '#' + this_1.parent.id), false);
+                        this_1.registeredEvents.push({
+                            htmlElement: this_1.parent,
+                            eventName: eventName,
+                            function: binding
+                        });
                     }
                     else if (typeof this_1._configuration.events[eventName] === 'object') {
                         var selectorsArray = Object.keys(this_1._configuration.events[eventName] || {});