devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
49 lines (40 loc) • 1.43 kB
JavaScript
var elementData = require("../../core/element_data"),
afterCleanData = elementData.afterCleanData,
strategyChanging = elementData.strategyChanging,
ko = require("knockout"),
compareVersion = require("../../core/utils/version").compare;
var originalKOCleanExternalData = ko.utils.domNodeDisposal.cleanExternalData;
var patchCleanData = function patchCleanData() {
afterCleanData(function (nodes) {
for (var i = 0; i < nodes.length; i++) {
nodes[i].cleanedByJquery = true;
}
for (i = 0; i < nodes.length; i++) {
if (!nodes[i].cleanedByKo) {
ko.cleanNode(nodes[i]);
}
delete nodes[i].cleanedByKo;
}
for (i = 0; i < nodes.length; i++) {
delete nodes[i].cleanedByJquery;
}
});
ko.utils.domNodeDisposal.cleanExternalData = function (node) {
node.cleanedByKo = true;
if (!node.cleanedByJquery) {
elementData.cleanData([node]);
}
};
};
var restoreOriginCleanData = function restoreOriginCleanData() {
afterCleanData(function () {});
ko.utils.domNodeDisposal.cleanExternalData = originalKOCleanExternalData;
};
patchCleanData();
strategyChanging.add(function (strategy) {
var isJQuery = !!strategy.fn;
if (isJQuery && compareVersion(strategy.fn.jquery, [2, 0]) < 0) {
restoreOriginCleanData();
}
});
;