Files
BitwiseCmd/app/app.js
Borys Levytskyi cadafab3ec huge regactoring
2015-04-02 22:53:06 +03:00

66 lines
1.5 KiB
JavaScript

(function (should, commandr) {
var app = {};
app.views = {};
app.view = function (element, model) {
var viewElement = element;
if(typeof element == 'string') {
viewElement = document.querySelectorAll(element)[0];
}
should.notBeNull(element);
bindr.bindView(viewElement, model);
};
var servicesContainer = {};
var controllersContainer = {};
var commands = {};
function resolveOrInject(name, inst, container, entityName) {
var resolved;
should.beString(name);
if (inst != null) {
container[name] = inst;
console.log(name + " " + entityName + " registered");
resolved = inst;
}
else {
resolved = container[name];
should.check(resolved != null, name + " " + entityName + " wasn't found");
}
return resolved;
}
app.service = function(name, inst) {
return resolveOrInject(name, inst, servicesContainer, "service");
};
app.controller = function(name, inst) {
return resolveOrInject(name, inst, controllersContainer, "controller");
};
app.command = function(name, handler) {
var cmd = commands[name];
if(cmd == null) {
cmd = commands[name] = new commandr.Command(name);
}
if(typeof handler == "function") {
cmd.subscribe(handler);
}
return cmd;
};
window.app = app;
})(window.should, window.commandr);