introduced observable

This commit is contained in:
Borys Levytskyi
2015-04-04 16:37:54 +03:00
parent d96bcb0517
commit 960b61de03
3 changed files with 20 additions and 16 deletions

View File

@@ -1,8 +1,13 @@
(function (core) {
var di = new core.Container();
var app = new core.AppShell(di);
app.cmdConfig = core.ObservableObject.create({
emphasizeBytes: true
});
app.debugMode = false;
app.bootstrap = function(rootViewElement) {

View File

@@ -1,16 +1,18 @@
(function(){
var observable = {};
(function(core){
function ObservableObject () {
this.executionHandlers = [];
}
observable.create = function(definition){
var obj = new bindr.ObservableObject();
ObservableObject.create = function(definition){
var obj = new ObservableObject();
for(var property in definition){
if(!definition.hasOwnProperty(property)){
continue;
}
Object.defineProperty(obj, property, {
get:bindr.ObservableObject.createGetter(property),
set:bindr.ObservableObject.createSetter(property)
get:ObservableObject.createGetter(property),
set:ObservableObject.createSetter(property)
});
obj[property] = definition[property];
@@ -18,34 +20,30 @@
return obj;
};
observable.ObservableObject = function() {
this.executionHandlers = [];
};
observable.ObservableObject.createGetter = function (propertyName){
ObservableObject.createGetter = function (propertyName){
return function(){
return this["_" + propertyName];
}
};
observable.ObservableObject.createSetter = function(propertyName){
ObservableObject.createSetter = function(propertyName){
return function(value){
this["_" + propertyName] = value;
this.notifyPropertyChanged(propertyName, value);
}
};
observable.ObservableObject.prototype.observe = function (handler){
ObservableObject.prototype.observe = function (handler){
var handlers = this.executionHandlers;
var index = handlers.push(handler);
return function () { handlers.splice(1, index); }
};
observable.ObservableObject.prototype.notifyPropertyChanged = function(propertyName, value){
ObservableObject.prototype.notifyPropertyChanged = function(propertyName, value){
this.executionHandlers.forEach(function(h){
h(propertyName, value);
});
};
window.core.observable = observable;
});
core.ObservableObject = ObservableObject;
})(window.core);

View File

@@ -11,6 +11,7 @@
<script type="text/javascript" src="core/di.js"></script>
<script type="text/javascript" src="core/appShell.js"></script>
<script type="text/javascript" src="core/htmlBuilder.js"></script>
<script type="text/javascript" src="core/observable.js"></script>
<script type="text/javascript" src="app/app.js"></script>