Javascript 使用另一个服务在同一控制器中的函数之间传递数据以获取数据
我通过Myservice从另一个控制器获取一些数据。我可以从视图中看到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
{{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 kullikowskiInEventCtrl
您可以删除行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()
}]);