我是角度框架的新手,对构造我的控制器有疑问。
我有一个角度控制器,它可以进行很少的服务调用,每个服务都会返回一个承诺每个呼叫都需要(依赖)前一次呼叫的数据。
即使多达三个这样的调用将我的控制器转换为一个丑陋的嵌入然后嵌入的那个()。
例如,考虑
的场景控制器定义为
angular.module('app')
.controller('mapCtrl', ['mapService', function(service){
var initResult = service.init();
initResult.then(function(map){
//01. init succeeded
var currentLocation = service.currentLocation();
currentLocation.then(function(currentLocation){
//02. current location succeeded
var addMarker = service.addMarker(currentLocation, map);
addMarker.then(function(){
//03. added marked
}, function(){
//03. failed added marked
});
}, function(){
//02. current location failed -> render some location
});
},
function(){
//01. init failed
});
}]);
行动隐藏在服务背后,因为我仍然不确定我们是否继续谷歌地图或开放街道地图或bing。
我尝试了基于状态的结果对象
angular.module('app')
.controller('mapCtrl', ['mapService', function(service){
/* handle add marker*/
var addMarkerResult = {
success: {},
failure: {}
};
/* handle get current locations */
var fetchLocationResult = {
success: function(){
_service.addMarker(addMarkerResult.success, addMarkerResult.failure);
},
failure: function(){}
};
/* handle map initialization */
var initMapResult = {
success: function(){
_service
.currentLocation(fetchLocationResult.success,
fetchLocationResult.failure);
},
failure: function(){}
};
service.init().then(initMapResult.success, initMapResult.failure);
}]);
问题: