Stores
- Сохранять информацию
- Работать с элементами колекции
- Регировать на события в Dispatcher
- Оповещать Views про изменения
Что сохранять?
- Состояние системы
- Данные
Абстрактный Store
function Store() {
var elements = {};
this.getAll = function() {
...
};
this.getById = function(id) {
...
};
this.add = function(el) {
...
};
//---Maybe---
this.addFilter = function(predicate, name) {
...
};
this.removeFilter = function(name) {
...
};
}
Взаимодействия
assign(Store.prototype, EventEmitter.prototype, {
emitChange: function() {
this.emit(CHANGE_EVENT);
},
addChangeListener: function(callback) {
this.on(CHANGE_EVENT, callback);
},
removeChangeListener: function(callback) {
this.removeListener(CHANGE_EVENT, callback);
}
});
Ближе к реальности
TodoStore.prototype = assign(Object.create(Store.prototype), {
retrieveData: function (dateFilter) {
...
},
createAndAdd: function(el) {
...
},
...
};
function TodoStore() {
Store.apply(this, arguments);
...
//for example:
this.isLoading = true;
}
Свяжем с Dispatcher
var todoStore = new TodoStore();
AppDispatcher.register(function (action) {
switch (action.actionType) {
case constants.RETRIEVE_TODOS:
...
todoStore.emitChange()
break;
case constants.DELETE_TODO:
...
todoStore.emitChange()
break;
}
}
Stores
By Roman Iakobchuk
Stores
- 1,148