2012-04-09 16 views
0

Я использую backbone.js для создания приложения. У меня код JS кода следующим образом:Целочисленное назначение объекта Javascript

window.RequestsView = Backbone.View.extend({ 

initialize:function (input) { 

    console.log('input ' + JSON.stringify(input)); 

    this.variables = { request_id:input.model.id, 
         status:input.model.status, 
         mavenGav:input.model.mavenGav, 
         email:input.model.emailId, 
         errorNo:input.model.errorNo, 
         errorDesc:input.model.errorDesc }; 

    console.log("variables : "+ JSON.stringify(this.variables)); 

    this.template = _.template(tpl.get('requests')); 
    var out = this.template(input); 

    console.log("out: "+ JSON.stringify(out)); 

    // deep copy the object 
    this.request = $.extend(true, {}, input); 
} 

});

Когда я отладки это в хром отладчик, я получаю следующие журналы,

input {"model":{"mavenGav":"fgdfgfdgdfg:fgdfgfd:gdfgdfg","repositories":["dfgdfgdfgf"],"emailId":"gdfg","id":1083,"createdTime":null,"status":"CREATED","errorNo":0,"errorDesc":null}} 
requests.js:12variables : {"request_id":1083} 

Там нет ошибок. Что происходит с остальной частью литерала javascript, который был присвоен этому. Переменные?

+1

Запишите только объект: 'console.log (this.variables);'. Я предполагаю, что другие свойства «undefined», которые исключаются из JSON, потому что ['undefined' не является допустимым значением] (http://json.org/). –

+0

Когда я тестирую это в jsfiddle, я получаю правильный ответ: http://jsfiddle.net/8BwPn/1/ Hmzzz. – koenpeters

+0

Я обновил код http://jsfiddle.net/8BwPn/4/, теперь он ничего не печатает. это вопрос, который у меня есть. могу ли я использовать переменные внутри объектных литералов? – Nambi

ответ

0

undefined значения не привязаны к json, потому что json знает только числа, строки, логические значения, null и объекты/массивы. Таким образом, свойства существуют, но они «теряются» в преобразовании.

Попробуйте console.debug("variables :",this.variables), что позволит вам осмотреть объект переменных.

+0

Поскольку этот объект является базовой моделью, способ получить значения - это метод get. Консоль.log печатает его, как если бы он был обычным JS-объектом. Но, когда вам нравится доступ к переменной-члену, используйте метод get. – Nambi

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