export default function appState($q, $rootScope, StateService, DateService, filterState) {
var state = {
dates: [],
type: StateType.NOTLOADED
};
function _stateChange(type) {
if(type instanceof StateType) {
$rootScope.$broadcast(type.name);
state.type = type;
}
}
function _getDates() {
let deferred = $q.defer();
if(!state.dates.length) {
DateService.getAll().then(function(result) {
state.dates = result;
deferred.resolve();
});
} else {
console.log('no data needed');
deferred.resolve();
}
return deferred.promise;
}
function init() {
_getDates().then(function() {
console.log(state.dates);
});
}
if(state.type == StateType.NOTLOADED)
init();
return {
getDates: _getDates
}
}
我试图为角度应用程序实现状态模式。
我想只在需要时或发生状态更改时加载不同的状态属性。
如果还没有加载,我想加载数据,否则我想立即返回结果。
每当我返回一个承诺时,我都会收到一个未定义的错误。我不知道我做错了什么。
将状态对象实例化为工厂。
import angular from 'angular';
import appState from './app.state.js';
export default function() {
angular.module('app').factory('appState', appState);
}