【发布时间】:2016-07-30 05:06:38
【问题描述】:
我已经在服务类(在构造函数中)中声明了一个 $rootScope 并在使用 this.$rootScope 的方法中分配并为其分配属性,当我想在该类中再次在另一个服务中使用时,我在构造函数中声明正在创建新的 $rootScope 并且该属性未定义
如何解决这个问题?可能吗 ?以及我们如何在角度上做??
我已经发布了这个问题 unable to access $rootscope property declared in one controller in other in angular using typescript
编辑: 如回答中所说,如果我编写了类似
的代码 export class DataService {
betterApproach = "value";
constructor(private $rootScope: any){
$rootScope.someProperty ="some value";
}
setBetterApproach(data){
this.betterApproach=data;
}
getBetterApproach() {
return this.betterApproach;
}
}
angular.module("services").service("dataService", ['$rootScope', DataService]);
angular.module("services").service("dataService", ['$rootScope', DataService]);
How shoud I use??
export class ConsumingService{
test:any;
constructor(private $rootScope: any ,
private dataService : DataService ){
this.test = $rootScope.someProperty;
this.test = dataService.getBetterApproach(); // Still returns old value
}
}
angular.module("services").service("ConsumingService", ['$rootScope', 'DataService',ConsumingService]);
所以当我打电话给 setsetBetterApproach 时你呢?在 DataController 中如何?
class DataCtrl{
constructor(private dataService: Dataservice){
}
myData(){
//this is ng-Click function
this.dataService.setBetterApproach("new Data");
}
}
有些地方我搞砸了,但仍然在 betterApproach 中获得价值,而不是 newData
【问题讨论】:
-
您最好使用服务共享数据,这些服务是单例,而不是使用全局。全局变量被认为是不好的做法,你应该尽量避免它们
-
我也想使用服务,因为它们是单身,但如何?当我在构造函数中创建我想要的服务时,我想使用它正在创建新变量。
-
很抱歉,但很难理解您要做什么。你能澄清一下吗?
-
我不明白这有什么难理解的?我在服务中声明了一个变量,并想在另一个服务中使用它......!在构造函数中,当我创建必须使用数据的服务实例时,数据不会持久化..!你收到了吗???我们有角度的 rootscope 可以根据需要共享一些数据,比如 global 所以我认为使用它......两者都不起作用!!!
-
首先你应该整理你的代码并完全删除
$rootScope。你确定你的myData()方法真的被调用了吗?您正在尝试在构造函数中使用黄油方法。在那里,您将永远无法从myData()获取更改的数据
标签: javascript angularjs typescript typescript1.5