lazo-next
Version:
A client-server web framework built on Node.js that allows front-end developers to easily create a 100% SEO compliant, component MVC structured web application with an optimized first page load.
55 lines (45 loc) • 1.31 kB
JavaScript
define(['lazoModel'], function (LazoModel) {
'use strict';
function getRefs(ctl, refs) {
var ctx = ctl.ctx;
var models = ctx.models;
var collections = ctx.collections;
var k;
var gid;
var i = 0;
var child;
for (k in models) {
gid = LazoModel._getGlobalId(models[k].name, models[k].params);
refs[gid] = true;
}
for (k in collections) {
gid = LazoModel._getGlobalId(collections[k].name, collections[k].params);
refs[gid] = true;
}
if (ctl.children) {
for (k in ctl.children) {
child = ctl.children[k];
for (i = 0; i < child.length; i++) {
getRefs(child[i], refs);
}
}
}
return refs;
}
return function (ctl) {
var refs = getRefs(ctl, {});
var modelInstances = ctl.ctx._rootCtx.modelInstances;
var modelList = ctl.ctx._rootCtx.modelList;
var k;
for (k in modelInstances) {
if (!refs[k]) {
delete modelInstances[k];
}
}
for (k in modelList) {
if (!refs[k]) {
delete modelList[k];
}
}
};
});