Показать сообщение отдельно
  #1 (permalink)  
Старый 19.05.2014, 12:46
Новичок на форуме
Отправить личное сообщение для mbfPavel Посмотреть профиль Найти все сообщения от mbfPavel
 
Регистрация: 19.05.2014
Сообщений: 3

Объекты выводятся в консоль но недоступны
Добрый день.

столкнулся с интересной проблемой..
имеется код:
function makeCounter() {
  return function f() {
    if (!f.currentCount) {
      f.currentCount = 0;
    }
   return ++f.currentCount;
 };
}

function dataPoint(addres, name,count) {
    this.setCoords2 = function(arr){
        this.coords = arr;
    }
    this.setCoords = function(addres2,obj){
        ymaps.geocode(''+addres2+'', {
        results: 1 
    }).then(function (res) {
        GeoObject = res.geoObjects.get(0),
	coords = GeoObject.geometry.getCoordinates()
/*POINT*/
        obj.setCoords2(coords)
        dPoint.setPoint(count,addres,name,coords)
    })
    }
    this.setCoords(addres,this)
    this.getCoords = function(){
        return this.coords
    }
}
var mydata ={}
MYcount = makeCounter();
    mydata[MYcount()] = new dataPoint('г.Санкт-Петербург, ул.Курчатова, д.10',"point-1",1)
    mydata[MYcount()] = new dataPoint('г.Санкт-Петербург, ул.Политехническая, д.6',"point-2",2)

console.log(mydata) // Возвращает хорошо и правильно всю информацию
/**
Object
1: dataPoint
addres: "г.Санкт-Петербург, ул.Курчатова, д.10"
coords: Array[2]
getCoords: function (){
name: "point-1"
setCoords: function (addres2,obj){
setCoords2: function (arr){
__proto__: dataPoint
2: dataPoint
addres: "г.Санкт-Петербург, ул.Политехническая, д.6"
coords: Array[2]
getCoords: function (){
name: "point-2"
setCoords: function (addres2,obj){
setCoords2: function (arr){
__proto__: dataPoint
__proto__: Object
/**/
// здесь начинаются проблемы....
// в частности не видно coords
for(i in mydata) {
  console.log(mydata[i])
}


после анализа было выявлено что проблема возникает в момент /*POINT*/
там переменная видится,
а если её передавать в глобальную или в объект.. её значение теряется..
или как показалось..
сначала выполняется весь код, возвращается результат
а код в POINT выполняется после.
тк если изменить метод setCoords
и вместо этого метода выполнять
function dataPoint(addres, name,count) {
    this.setCoords2 = function(arr){
        this.coords = arr;
    }
   obj = this
        ymaps.geocode(''+addres+'', {
        results: 1 
    }).then(function (res) {
        GeoObject = res.geoObjects.get(0),
			coords = GeoObject.geometry.getCoordinates()
                obj.coords = coords
		})
    this.setCoords(addres,this)
    this.getCoords = function(){
        return this.coords
    }
        this.name=name
        this.addres = addres
       }


проблема остаётся такой же..

подскажите пожалуйста где искать ошибку... ?
второй раз уже сталкиваюсь с подобной проблемой..
первый раз та же ситуация была
только вместо функции ymaps.geocode
была вида
myvar ='';
$.get(url,data,function(result){
    //Здесь result видится, а если присвоить
    myvar = result
    // myvar используется с присвоенным значение
})
// здесь myvar пустое...
Ответить с цитированием