如何在角度js中实现有状态代理?

时间:2017-01-30 21:02:40

标签: javascript angularjs ecmascript-6 angular-promise

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);
}

0 个答案:

没有答案