2013-07-19 6 views
4

У меня проблема, когда одно из полей в созданном объекте undefined. Вот объект:Возврат поля «неопределенные» в объекте

var Collateral = Collateral || {}; 

Collateral.NoteModel = function(config) { 
"use strict"; 
this.loanId = config.loanId; 
this.docId = config.docId; 
this.borrowerName = config.borrowerName; 
this.funder = config.funder; 
this.docsDrawn = config.docsDrawn; 
this.firstPayment = config.firstPayment; 
this.loanAmount = config.loanAmount; 
this.interestRate = config.interestRate; 
this.dateDocsIn = config.dateDocsIn; 
this.status = config.status; 
this.eventDate = config.eventDate; 
this.submittedBy = config.submittedBy; 
}; 

Я храню список объектов и каждое поле объекта хранения правильно, за исключением status поля. Когда я вызываю поле status сам по себе, он возвращает правильное значение, но когда я пытаюсь получить доступ к note.status, он возвращает undefined.

Вот код для создания списка объектов:

var renderNotesList = function(url, data, elementId, liFunc) { 
    $.getJSON(url, data, function(response) { 
     var notesList = []; 
     renderNotesList.divider; 
     $(elementId).empty(); 
     $(response).each(function() { 
      var entry = $(this)[0]; 
      var note = new Collateral.NoteModel({ //initialize note object 
       loanId: entry["Loan_ID"], 
       docId: entry["Doc_ID"], 
       borrowerName: entry["Borrower_Name"], 
       funder: entry["Funder"], 
       docsDrawn: entry["Docs_Drawn"], 
       firstPayment: entry["First_Payment"], 
       loanAmount: entry["Loan_Amount"], 
       interestRate: entry["Interest_Rate"], 
       dateDocsIn: entry["Date_Docs_In"], 
       status: entry["Event_Type"], 
       eventDate: entry["Event_Date"], 
       submittedBy: entry["Submitted_By"] 
      }); 
        console.log(entry["Event_Type"]); // here the value is correct 
        console.log(note.status); // here the value is "undefined" 
      var li = liFunc(note, renderNotesList.divider);   
      li.appendTo($(elementId)); 

      try { 
       $(elementId).listview('refresh'); 
      } 
      catch(e) { 
       return; 
      } 
     }); 
    });  
}; 

Для всех остальных note. вызовов, переменные являются правильными. Это только status, который возвращает undefined. Объекты сохраняли правильные значения, но через некоторое время, не меняя ничего, значения стали undefined. Есть идеи? Заранее спасибо!

+0

Попробуйте '$ (this)' вместо '$ (this) [0]', поскольку он возвращает тот же объект. – Omar

+0

Пробовал! Он по-прежнему возвращает неопределенные значения для поля status. – AToya

+0

Хорошо, определите 'примечание' перед циклом' each'. Редактировать: неважно, поскольку вы упомянули «примечание» для других. – Omar

ответ

0

Поскольку я все еще не могу комментировать, я отправлю в качестве ответа. Мое предположение заключается в том, что javascript никогда не говорил о проблеме «передача как значение/ссылка». var entry содержит все значения из вашего JSON и копируется как ссылка на ваш объект «note», но поскольку он ограничен лимитом, эти ссылки перестают существовать.

Для тестирования попробуйте скопировать некоторые значения непосредственно из переменной response.

Смежные вопросы