Javascript 使用另一个服务在同一控制器中的函数之间传递数据以获取数据

Javascript 使用另一个服务在同一控制器中的函数之间传递数据以获取数据,javascript,angularjs,controller,Javascript,Angularjs,Controller,我通过Myservice从另一个控制器获取一些数据。我可以从视图中看到{{users.data},但是users.length=0,并且$data为空,这意味着我无法在getData函数中访问MyService的内容。。如果我用json数据替换MyService,比如 $scope.users=[{..},{..}]它工作正常 谢谢 app.service('MyService', function() { return data = []; }); app.controlle

我通过Myservice从另一个控制器获取一些数据。我可以从视图中看到
{{users.data}
,但是
users.length=0
,并且
$data
为空,这意味着我无法在getData函数中访问MyService的内容。。如果我用json数据替换MyService,比如
$scope.users=[{..},{..}]
它工作正常 谢谢

   app.service('MyService', function() {
  return data = [];
  });
  app.controller('tableController', function ($scope, 
   $filter,NgTableParams,MyService) {
        $scope.users= MyService
  $scope.usersTable = new NgTableParams({
                page: 1,
                count: 6
            }, {
                getData: function(params) {

                    params.total($scope.users.length);
                    $scope.da = params.sorting() ? $filter('orderBy')
    ($scope.users, params.orderBy()) : $scope.da;
                    $scope.da= params.filter() ? $filter('filter')
   ($scope.da, params.filter()) : $scope.users;
                    return $scope.da.slice((params.page() - 1) * 
  params.count(), params.page() * params.count());
                }
            }
        );
    });

当您在第一个控制器中获取数据时,您调用
MyService.setData(数据)服务将存储在其本地var
数据中,并将其保存在那里。然后在第二个控制器中,您可以通过调用
MyService.getData()

第一控制器1

app.controller('EventCtrl', ['$scope', 'EventService', 'MyService',

    function ($scope, EventService , MyService) {

        var baseUrl = '';

        $scope.getEvents=function()
        {
            var apiRoute = 'http://localhost:9811/notification/notification/';
            var _Event = EventService.getAll(apiRoute);
            _Event.then(function (response) {
                    $scope.events= response.data;
                    MyService.data = $scope.events;
                    MyService.setData($scope.events);
                    $scope.VarCtrl1= MyService;

                },
                function (error) {
                    console.log("Error: " + error);
                });

        }
        $scope.getEvents()
    }]); 
我更新了服务,但它不起作用。所以我修改了第一个控制器,像这样,你觉得呢

app.controller('EventCtrl', ['$scope', 'EventService', 'MyService',

  function ($scope, EventService , MyService) {

    var baseUrl = '';

    $scope.getEvents=function()
    {
        var apiRoute = 
   'http://localhost:9811/notification/notification/';
        var _Event = EventService.getAll(apiRoute);
        _Event.then(function (response) {
            var data = response.data
                MyService.setData(data);
                $scope.VarCtrl1= MyService;

            },
            function (error) {
                console.log("Error: " + error);
            });

    }
    $scope.getEvents()
}]); 
感谢服务的更新,现在它更好了…我可以在$users中有数据,在tableController中有$data,但orderBy需要一个数组,但我得到了这个:(当我使用consoleLoge($scope.users)时) 对象{data:Array(0),setData:function,getData:function}data: 数组(9)0:Object1:Object2:Object3:Object4:Object5:Object6: Object7:Object8:Objectlength:9_______:Array(0)getData: function()setData:function(inData)proto:对象
tableController.js:24

第一个控制器@Jarek kullikowskiIn
EventCtrl
您可以删除行
MyService.data=$scope.events
并且在
tableController
中,您应该能够使用
$scope.users=MyService.getData()获取数据
。这有意义吗?在这种情况下:ReferenceError:EventCtrl.js:32在processQueue(angular.js:16170)没有定义数据好的,在这种情况下,让我稍微更改一下服务,看看是否会得到修复。在最后一次更改theres ni javascripts错误后,请给我2分钟时间。但是我在用户中没有得到任何数据
app.controller('EventCtrl', ['$scope', 'EventService', 'MyService',

  function ($scope, EventService , MyService) {

    var baseUrl = '';

    $scope.getEvents=function()
    {
        var apiRoute = 
   'http://localhost:9811/notification/notification/';
        var _Event = EventService.getAll(apiRoute);
        _Event.then(function (response) {
            var data = response.data
                MyService.setData(data);
                $scope.VarCtrl1= MyService;

            },
            function (error) {
                console.log("Error: " + error);
            });

    }
    $scope.getEvents()
}]);