2012-04-09 14 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} 

はエラーはありません。 this.variablesに割り当てられた残りのJavaScriptリテラルはどうなりますか?

+1

オブジェクトだけを記録します: 'console.log(this.variables);'。私は他のプロパティが 'undefined'であると推測しています。これは[' undefined'が許容値ではないので] JSONから省略されています(http://json.org/)。 –

+0

これをjsfiddleでテストすると、正しい答えが得られます。http://jsfiddle.net/8BwPn/1/ Hmzzz。 – koenpeters

+0

コードhttp://jsfiddle.net/8BwPn/4/を更新しましたが、何も印刷されません。これは私が持っている質問です。オブジェクトリテラル内で変数を使用することはできますか? – Nambi

答えて

0

undefined jsonは数字、文字列、ブール値、ヌル、オブジェクト/配列しか認識していないので、値はjsonにストリング化されません。したがってプロパティは存在しますが、コンバージョンには「失われます」。

console.debug("variables :",this.variables)を試してください。変数オブジェクトを検査できるようになります。

+0

このオブジェクトはバックボーンモデルであるため、値を取得する方法は 'get'メソッドを使用しています。 console.logは、それが通常のJSオブジェクトであるかのように出力します。しかし、メンバ変数にアクセスする場合は、 'get'メソッドを使用します。 – Nambi

関連する問題