Angularjs 如何在控制器JS中设置服务超时?
我在Angular JS中提供服务,Angularjs 如何在控制器JS中设置服务超时?,angularjs,Angularjs,我在Angular JS中提供服务,set/getvalue: .service('mapService', function () { var mapCoord= []; mapCoord['x'] = 0; mapCoord['y'] = 0; return { getProperty: function () { retu
set/get
value:
.service('mapService', function () {
var mapCoord= [];
mapCoord['x'] = 0;
mapCoord['y'] = 0;
return {
getProperty: function () {
return mapCoord;
},
setProperty: function(value) {
if(value.length > 0){
var partsOfStr = value.split(',');
mapCoord['x'] = partsOfStr[0];
mapCoord['y'] = partsOfStr[1];
}
}
};
})
我还有两个控制器,首先执行AJAX请求并获取数据,然后传递给服务:
.controller('EditController', [...]){
// AJAX Method
response = function (data){
$scope.data = data;
mapService.setProperty(data);
}
}
下一个控制器从服务、第一个控制器获取数据:
.controller('MapController', [...]){
var mapCoord = mapService.getProperty();
}
在HTML模板中,这些控制器是嵌套的
<div ng-controller="EditController">
<div ng-controller="MapController"></div>
</div>
问题是,在controller
MapController
中,我从服务mapService
中得到了空数组,因为第一个controllerEditController
中的AJAX尚未返回数据。您可以在AJAX调用中的success回调中触发$broadcast(),然后调用mapService的getProperty(),启用$on。如果您还没有尝试过,请告诉我,我可以发布一个代码示例。甚至可以在MapController中观看mapService.getProperty()。我们可以分享一个解决方案示例吗