Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在angular js中实现有状态代理?_Javascript_Angularjs_Ecmascript 6_Angular Promise - Fatal编程技术网

Javascript 如何在angular js中实现有状态代理?

Javascript 如何在angular js中实现有状态代理?,javascript,angularjs,ecmascript-6,angular-promise,Javascript,Angularjs,Ecmascript 6,Angular Promise,我正在尝试为角度应用程序实现一个状态模式 我只想在需要或发生状态更改时加载不同的状态属性 如果尚未加载任何内容,我希望加载数据,否则我希望立即返回结果 无论何时我返回一个承诺,我都会得到一个未定义的错误。我不知道我做错了什么 状态对象正在实例化为工厂 export default function appState($q, $rootScope, StateService, DateService, filterState) { var state = { dates: [],

我正在尝试为角度应用程序实现一个状态模式

我只想在需要或发生状态更改时加载不同的状态属性

如果尚未加载任何内容,我希望加载数据,否则我希望立即返回结果

无论何时我返回一个承诺,我都会得到一个未定义的错误。我不知道我做错了什么

状态对象正在实例化为工厂

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

显示使用promise未定义的位置以及具体错误是什么?
deferred.resolve()没有任何值?
import angular from 'angular';
import appState from './app.state.js';

export default function() {
    angular.module('app').factory('appState', appState);
}