success(function(data) { angular.forEach(data.response.venues, function(item) { var pin = { latitude: parseFloat(item.location.lat), longitude: parseFloat(item.location.lng), title: item.name, id: item.id } pin.options = { icon: $dynamicConstants.getCdnImagesUrl() + query + '.png', labelStyle: { 'overflow': 'visible' } }; $scope.map.markers.push(pin); }) }).error(function() { });
请问如何function(data)外获取到var pin的值?
直接获取不到.
在这个函数里面写个闭包函数, 被外部引用到.
success(function(data) { angular.forEach(data.response.venues, function(item) { var pin = { latitude: parseFloat(item.location.lat), longitude: parseFloat(item.location.lng), title: item.name, id: item.id } pin.options = { icon: $dynamicConstants.getCdnImagesUrl() + query + '.png', labelStyle: { 'overflow': 'visible' } }; $scope.map.markers.push(pin); //vvvvvvvvvvvvvvvvvv var getPin = function () { return pin; } // 被外部引用到 window.getPin = getPin; //^^^^^^^^^^^^^^^^^^ }) }).error(function() { });
但是你这里是循环, 外部引用pin有何意义?
可以在外面定义var pin = {};然后里面用 pin = {
latitude: parseFloat(item.location.lat), longitude: parseFloat(item.location.lng), title: item.name, id: item.id }
就是外面定义,里面赋值
把pin定义在function(data)之外,请求到数据之后给pin赋值