【发布时间】:2016-11-05 05:00:34
【问题描述】:
我对这个 Angular 组件通信非常陌生。我正在使用 Angular 1.5.X 版本,并且正在使用工厂在组件之间共享数据。我面临一个问题,即服务变量的异步值在特定时间后刷新。
我知道一种解决方案是在非范围变量上设置观察者,但我认为我在这里遗漏了一些重要的东西。各位大佬能分享一下看法吗?
这是 Service.js 代码
Service.$inject = ['$http','$q'];
function Service($http,$q) {
this.$http = $http;
this.$q = $q;
};
Service.prototype.getTileCount = 0;
Service.prototype.getTileData = function(Url){
var deferred = this.$q.defer();
this.$http.get(Url)
.success(function(response){
Service.prototype.getTileCount = response.data.length;
console.log('data length :', Service.prototype.getTileCount);
deferred.resolve(response);
});
return deferred.promise;
};
这是组件 1 控制器代码
function Component1Controller(Service) {
this.tileData ={};
var self = this;
var promise = Service.getTileData(this.sourceUrl);
promise.then(function(data) {
self.tileData = data;
Service.getTileCount = data.length;
console.log('This is tileData : '+ Service.getTileCount);
});
};
这是组件 2 控制器代码
function Component2Controller(Service) {
var self = this;
console.log(Service.getTileCount);
// getting getTileCount = 0; After setting timeout function of 5 second I am able to get getTileCount value
};
【问题讨论】:
标签: javascript angularjs components angular-services