Angularjs无法从服务中获取数据
问题描述:
我试图使用服务将数据从一个控制器传递到另一个控制器,但无论我在尝试什么,总是会在第二个控制器上返回'undefined'。这里是我的服务:Angularjs无法从服务中获取数据
app.service('myService', ['$rootScope', '$http', function ($rootScope, $http) {
var savedData = {}
this.setData = function (data) {
savedData = data;
console.log('Data saved !', savedData);
}
this.getData = function get() {
console.log('Data used !', savedData);
return this.savedData;
}
}]);
这里是控制器1:
.controller('HomeCtrl', ['$scope','$location','$firebaseSimpleLogin','myService','$cookies','$window', function($scope,$location, $firebaseSimpleLogin, myService, $cookies, $window) {
loginObj.$login('password', {
email: username,
password: password
})
.then(function(user) {
// Success callback
console.log('Authentication successful');
myService.setData(user);
console.log('myservice:', myService.getData()); // works fine
}]);
然后控制器2:
// Dashboard controller
.controller('DashboardCtrl', ['$scope','$firebaseSimpleLogin','myService',function($scope,$firebaseSimpleLogin, $location, myService) {
console.log('myservice:', myService.getData()); //returns undefined
}]);
即简单的代码,不幸的是我一直在苦苦挣扎了几个小时,有什么建议?谢谢。
答
在这里创造一个小提琴: http://jsfiddle.net/frishi/8yn3nhfw/16
找出问题,您可以删除自定义的依赖关系为myService并看看是否有工作?加载小提琴后查看控制台。
var app = angular.module('app', [])
.service('myService', function(){
this.getData = function(){
return "got Data";
}
})
答
我认为问题在于您在服务中返回this.savedData
。尝试返回savedData
。
this
在Javascript中表现与其他语言不同。
+0
即使没有这个。它不起作用,我在阅读关于主题的其他帖子后实际添加了它,但它没有改变结果。 – elyanno
您是否也在控制台中看到'Data used !'? –
我看到的唯一区别是在第一个例子中,'setData'方法在'then'块中被调用。你可以在第二个控制器中尝试吗? – frishi
是的,我得到数据使用!在从控制器1使用它时在控制台中,但不从控制器2中使用。而且我试图在block中获取数据,因为与controller1中的请求相同,这仍然不起作用。 – elyanno