зеркало из https://github.com/DeGsoft/meanjs.git
53 строки
1.8 KiB
JavaScript
53 строки
1.8 KiB
JavaScript
(function () {
|
||
// Las factorías, y los servicios, son funciones estándar
|
||
// Una gran diferencia con los controladores es que son singleton
|
||
// Eso los convierte en un buen lugar para compartir datos
|
||
var movimientosFactory = function () {
|
||
// el array de movimientos y el total lo mantiene la factoría
|
||
// de esta forma sobrevive a las recargas de controladores
|
||
var movimientos = [];
|
||
// Normalmente estos datos se persisten en servidores remotos
|
||
// o al menos se almacenan en el browser
|
||
var total = {
|
||
ingresos: 0,
|
||
gastos: 0
|
||
};
|
||
// las factorias siempre devuelven objetos, para eso son fábricas
|
||
// en este caso le llamo result
|
||
// Estos objetos pueden contener funciones de lógica reutilizables
|
||
var result = {};
|
||
|
||
/** lista de los movimientos actuales */
|
||
result.getMovimientos = function () {
|
||
return movimientos;
|
||
};
|
||
/** objeto total actual */
|
||
result.getTotal = function () {
|
||
return total;
|
||
};
|
||
/** guardar un nuevo movimiento */
|
||
result.postMovimiento = function (movimiento) {
|
||
movimiento.tipo = tipo(movimiento);
|
||
movimientos.push(movimiento);
|
||
console.log(movimiento);
|
||
total.ingresos += movimiento.esIngreso * movimiento.importe;
|
||
total.gastos += movimiento.esGasto * movimiento.importe;
|
||
};
|
||
/** acceso al balance */
|
||
result.balance = function () {
|
||
return total.ingresos - total.gastos
|
||
}
|
||
|
||
/** función privada auxiliar para trasnformar el tipo de movimiento */
|
||
var tipo = function (movimiento) {
|
||
return movimiento.esIngreso && 'Ingreso' || 'Gasto'
|
||
}
|
||
|
||
// Exponemos funcionalidad devolviendo el objeto creado,
|
||
// para que el cliente explote sus métodos
|
||
return result;
|
||
};
|
||
// se registran dentro de un módulo con la palabra clave factory
|
||
angular.module('cashFlow').factory('movimientosFactory', movimientosFactory);
|
||
}());
|