首页 > angular controller 中调用service

angular controller 中调用service

service:
.factory('loadLayerSelect',['$http','$q',function($http,$q){
        var service={
                _layerObj:{},
                _layerFieldsObj:{},
                getLayerObj : function(){
                    var promise = init();
                    
                    promise.then(function(datas){
                        data=datas.data.response;
                        for(var i=0;i<data.length;i++){
                            service._layerObj[i] = {};
                            service._layerObj[i].code = data[i].code;
                            service._layerObj[i].name=data[i].name;
                        }
                    }, function(resp){
                    },function(){
                    })
                },
                loadFields : function(layerCode){
                    for(var d in data){
                        if(d.code==layerCode){
                            service._layerFieldsObj= d.fields;
                        }
                    }
                }
            };
            var data={};
            var init = function(params){
                var deferred = $q.defer();
                
                $http({
                    method:'GET',
                    url:'service/officework/sxxDirection.json'
                }).success(function (data) {  
                    delay.resolve(data);  
                }).error(function () {  
                    delay.reject("Can't search uploadQuantity data.");  
                });   
                return delay.promise;  
            }
                return service;
            }])
            
            
            controller:
            var ser = loadLayerSelect.getLayerObj();
             console.log(ser._layerObj);
             
         

controller打印总是空值,但是loadLayerSelect.getLayerObj()返回的ser值是正常的,请问这是什么原因?


因为loadLayerSelect.getLayerObj()还没有执行完,正确的姿势是在controller里用promise

【热门文章】
【热门文章】