无法将值从工厂返回到服务angularJS

时间:2016-09-16 12:02:42

标签: javascript angularjs

我的工厂代码

.factory('appData', ['connectionManager', function($connectionManager) {
    return {
        getAppDataItem: function(apiName, params) {
            console.log('Getting value...');
            $connectionManager.sendRequest({
                'apiName': apiName,
                'params':{
                    '@key': "'" + params['@key'] + "'"
                }
            }).then(function(res){
                console.log('Retrieved data ', res.data);
                return res.data;
            });
        }
    }
}]);

我的服务代码

            var x = appData.getAppDataItem('getItemFromAppData', {
                    '@key': 'last_emp_id'
                });
            console.log(x);

我想将工厂中.then()返回的值分配给我服务中的var x。但我无法做到。请帮我。我的价值高达.then()。之后我无法将其传递给该服务。

1 个答案:

答案 0 :(得分:1)

getAppDataItem函数需要返回一个承诺:

.factory('appData', ['connectionManager', function($connectionManager) {
    return {
        getAppDataItem: function(apiName, params) {
            console.log('Getting value...');                
            //$connectionManager.sendRequest({
            //return promise
            return $connectionManager.sendRequest({
                'apiName': apiName,
                'params':{
                    '@key': "'" + params['@key'] + "'"
                }
            }).then(function(res){
                console.log('Retrieved data ', res.data);
                return res.data;
            });
        }
    }
}]);

客户端代码应使用promise的.then方法来访问数据。

var promise = appData.getAppDataItem('getItemFromAppData', {
        '@key': 'last_emp_id'
    });
promise.then( function (x) {
    console.log(x);
});