2016-09-29 67 views
0

我有一个链接,我想用它来将数据传递到另一个页面。我可以访问我访问的页面上的服务,但数据是空的。角度服务丢失新控制器中的设置数据

的HTML:

<a href="/signup" ng-click="saveSubscriptionData()"">Female</a> 

服务:

var app = angular.module('boxHome', []); 

app.controller('boxHomeController', function ($scope, SubscriptionService) { 
    $scope.saveSubscriptionData = function() { 
     SubscriptionService.gender = 'male'; 
     SubscriptionService.subscription = 'infant'; 
     console.log(SubscriptionService); 
    } 
}); 

app.factory('SubscriptionService', function() { 
    return { 
     gender: '', 
     subscription: '' 
    }; 
}); 

以上日志语句返回性别: '男' 和订阅: '婴儿'。

我链接到页面:

var appSignup = angular.module('boxSignup', ['boxHome']); 

appSignup.controller('boxSignupController', function ($scope, SubscriptionService) { 
    $scope.init = function (domainId) { 
     console.log(SubscriptionService); 
    }; 
}); 

我希望上面的日志语句返回性别:“男”和订阅:“婴儿”。它返回性别:''和订阅''。

任何想法?

+0

是您的应用程序中的SPA - 如果不是,重新加载页面将清除您的服务每次。 – tymeJV

+0

不,不是。你将如何处理? –

+1

阅读角度路由,以及Angular SPA教程中的一些文章。 (他们会比我更好地解释) - 如果您不想采用SPA方式 - 您必须将数据存储在本地存储中并获取每次加载。 – tymeJV

回答

0

您正在返回JSON对象的新实例,并且每次调用工厂时都不会共享状态。当你使用它

app.factory('SubscriptionService', function() { 
    var service = {}; 

    var info = {}; 
    info.gender = ''; 
    info.subscription = ''; 

    service.getInfo = getInfo; 

    function getInfo(){ 
     return info; 
    } 

    return service; 
}); 

:要解决这个问题,声明该工厂内的对象被替代返回

var info = SubscriptionService.getInfo(); 
console.log(info.subscription); 
+0

我试过了,但结果相同。 –

2
app.service('SubscriptionService',function(){ 
    var gender=''; 
    var subscription=''; 
    this.save=function(gender,subscription){   
     this.gender=gender; 
     this.subscription=subscription; 
    }; 

    this.getGender=function(){ 
     return gender; 
    }; 

    this.getSubscription=function(){ 
     return subscription; 
    }; 
}); 


.controller('boxHomeController', function ($scope, SubscriptionService) { 
    $scope.saveSubscriptionData = function() { 
     SubscriptionService.save('male','infant'); 
    } 
}); 
+0

没有运气。 SubscriptionService仍然返回空字符串。 –

+0

这可能是因为您正在使用2个角度模块。 'appSignup'和'app'。 – Pradeepb

+0

是的,我需要能够在两个应用程序之间使用数据。 –