2014-09-30 3 views
1

У меня есть код, показанный ниже. Моя проблема в том, что часть console.log(obj) говорит, что Object {InternalNumber = 22 } и не содержит других переменных. Я ожидаю, что сказать:массив объектов, не отображающий все переменные

Object { Id = someID, ParameterId="someParaId", InternalNumber = someNr, value="someValue"}

Что может быть неправильно?

Если вы еще не заметили ... Я сохраняю объект в localStorage, а затем извлекаю его оттуда.

function getModel() { 

    var model = { 
     Id: '', 
     ParameterId: '', 
     InternalNumber: '', 
     Value: '' 
    } 

    return model; 
} 

function saveObjectToLocal() { 
    model = getModel(); 

    model.Id = $(this).find(':input[name$=Id]').val(); 
    model.ParameterId = $(this).attr('id'); 
    model.InternalNumber = currentParcel.children('#viewModel_InternalNumber').val(); 
    model.Value = $(this).find(':input[name$=Value]').val(); 

    localStorage.setItem("model", JSON.stringify(model));   
} 

function getObjectFromLocalAndInsertInFields() { 
    obj = JSON.parse(localStorage.getItem("model")); 
    console.log(obj); 
} 
+0

Что 'localStorage.getItem («модель») и' JSON.stringify (модель) 'вернуть? – Cerbrus

+0

Оба они возвращают "{" InternalNumber ":" 22 "}" – user1960836

ответ

1

Как вы звоните saveObjectToLocal Функция. $ (this) внутри этой функции, вероятно, не соответствует чему-либо, потому что «это», вероятно, является глобальным (оконным) объектом, а элементы DOM не сопоставляются в объекте окна.

Чтобы посмотреть, что я говорю. Пробег:

$(this); 
$(this).find("input"); 
$(this).find("input").attr("id"); 

с вашей консоли. Первый вывод будет длиной 1 только окна, второй - пустой объект jQuery, а третий - неопределенным.

Вызов .val() и .attr в пустом списке jQuery будет неопределенным и поэтому не будет сериализован для JSON. InternalNumber сериализуется, потому что currentParcel.children дает соответствие. Вам нужно исправить селектора $ (this).

+0

Это действительно ответ. Решение было (как вы сказали), чтобы получить контроль по id вместо $ (this) – user1960836

0

Json stringify функция исключает атрибуты с неопределенным значением, поэтому сначала проверьте, если недостающие атрибуты имеют значения

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