首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angularjs无法从服务中获取数据。

Angularjs无法从服务中获取数据。
EN

Stack Overflow用户
提问于 2016-01-21 18:08:37
回答 2查看 371关注 0票数 0

我试图使用服务将数据从一个控制器传递到另一个控制器,但是无论我尝试什么,它总是在第二个控制器上返回“未定义的”。这是我的服务:

代码语言:javascript
复制
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;
 }
}]);

以下是controller1:

代码语言:javascript
复制
.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
}]);

然后是controller2:

代码语言:javascript
复制
// Dashboard controller
.controller('DashboardCtrl', ['$scope','$firebaseSimpleLogin','myService',function($scope,$firebaseSimpleLogin, $location, myService) {

    console.log('myservice:', myService.getData()); //returns undefined

}]);

这是简单的代码,不幸的是,我已经挣扎了几个小时了,有什么建议吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-21 19:19:28

在这里创建了一个小提琴:http://jsfiddle.net/frishi/8yn3nhfw/16

要隔离这个问题,您能从myService的定义中删除依赖项并查看它是否有效吗?装上小提琴后看控制台。

代码语言:javascript
复制
var app = angular.module('app', [])
.service('myService', function(){
    this.getData = function(){
   return "got Data";
  }
})
票数 0
EN

Stack Overflow用户

发布于 2016-01-21 18:20:53

我想问题是您要在服务中返回this.savedData。尝试返回savedData

this在Javascript中的行为与其他语言不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34931139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档