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