mirror of
https://github.com/BorysLevytskyi/BitwiseCmd.git
synced 2025-12-10 06:52:05 +01:00
introduced observable
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user