2014-02-13 3 views
0

Я получаю Ошибка «Не могу прочитать свойство неопределенного» в следующем коде.JS TypeError: Не удается прочитать свойство 'map' of undefined

Что происходит, так называется initFromServer(), который отправляется на получение модели с сервера. Но в результате происходит то, что при вызове init() модель параметра не определена. Используя console.log, чтобы определить, что происходит, кажется, что он никогда не достигает функции Proxy.getModel(), прежде чем он определит, что модель не определена.

Я не совсем уверен, что происходит. Есть много других функций, и что не то, что я не вставил. Надеюсь, это имеет смысл.

ClientModel.prototype.initFromServer = function(success) { 
    this.getProxy().getModel(this.init(), success()); 
} 

ClientModel.prototype.init = function(model) { 
    this.setMap(new catan.models.Map(model.map.radius));  
}; 

В файле прокси мы имеем:

Proxy.prototype.getModel = function(update, success) { 
    jQuery.get("/game/model", function(data) { 
        update(data); 
        success(data); 
    }); 
}; 
+0

Итак, вы определили 'Init()' метод с 1 аргументом и не проходит ни при вызове его. – zerkms

ответ

1

При вызове init() в initFromServer() вы не передаете никаких аргументов.

В функции init() доступ model в качестве первого аргумента ...

ClientModel.prototype.initFromServer = function(success) { 
    this.getProxy().getModel(this.init(), success()); 
             | 
             +---- No Argument. 
} 

ClientModel.prototype.init = function(model) { 
             | 
             v 
    this.setMap(new catan.models.Map(model.map.radius)); 
             | 
             +----> Ups. 
}; 
Смежные вопросы