如何将数据从 angularJS 工厂填充到控制器

How to populate data from angularJS factory to controller?

本文关键字:工厂 填充 控制器 angularJS 数据      更新时间:2023-09-26

我在angularjs工厂中有数据,这是剑道网格的数据源,我也想获取原始数据对象来编写一些逻辑,但我无法将数据对象从工厂填充到控制器,console.log正在工厂中打印数据。如何使用相同的 angularJS 工厂在控制器中获取 json 对象?

工厂.js

angular.module('App').factory('processService', function($http, $stateParams, OrcitLoader) {
            'use strict';
            getPrcChallengesGridDataSource: function(processKey, challengeType) {
                    return new kendo.data.DataSource({
                        type: 'json',
                        transport: {
                            read: function(options) {
                                return OrcitLoader.load($http.get('app/challenge/rest/getChallengesForGrid?key=' + processKey + '&challengeType=' + challengeType)).success(
                                    function(data) {
                                      console.log(data);
                                        options.success(data);
                                    }).error(function(err) {
                                    console.log(err);
                                });
                            }
                        },
                    });

控制器.js

angular
    .module('App')
    .controller('ProcessCtrl', function($scope, processService) {
            processService.getPrcChallengesGridDataSource($stateParams.processId,challengeTypeLkupCode).then(function(response) {
                    var data = response.data;
                }
            });

从服务返回数据

angular.module('App').factory('processService', function($http, $stateParams, OrcitLoader) {
            'use strict';
            getPrcChallengesGridDataSource: function(processKey, challengeType) {
                    return new kendo.data.DataSource({
                        type: 'json',
                        transport: {
                            read: function(options) {
                                return OrcitLoader.load($http.get('app/challenge/rest/getChallengesForGrid?key=' + processKey + '&challengeType=' + challengeType)).success(
                                    function(data) {
                                      console.log(data);
                                        options.success(data);
                                        return data
                                    }).error(function(err) {
                                    console.log(err);return;
                                });
                            }
                        },
                    });