2012-03-22 17 views
0

私はビュー(Backbone.View.extendを使って作成)とJSONオブジェクトを持っていますが、実際にはcouchdbデータベースからオブジェクトを取得します。ビューに値を与えるにはどうしたらいいですか?JSONとBackbone.jsでビューに値を追加

例えば、私はこれらの2つのオブジェクトを持っている:

var personJSON = {"name":"Buddy","email":"[email protected]"} 
var personDetailsView; //Backbone.View 

は、明示的にモデルにマッピングすることなく、ビューに値を渡す方法はありますか?

私は、バックボーンコレクションにオブジェクトを追加できますが、ビューは追加できないという例が見つかりました。

+0

ありそれと間違っているものは何もありませんが、私は、彼らが明示的にJSONをマッピングしていないかの例を見てきましたモデル。 –

答えて

1

あなたはPersonDetailsView(Backbone.View)オブジェクト内のJSONオブジェクトにアクセスする必要がある場合は、これを行うための一つの方法は、ビューのコンストラクタのオプションとしてJSONパラメータを渡すことです:

//view definition 
var PersonDetailsView = Backbone.View.extend({ 
    initialize: function(){ 
    this.person = this.options.person; //do something with the parameter 
    } 
}); 

var personJSON = {"name":"Buddy","email":"[email protected]"}; 
var personDetailsView = new PersonDetailsView({ person : personJSON }); 

新しいビューを作成するときにバックボーンのofficial documentation:

からは、あなたが渡すオプションは、今後の参考のために、this.optionsとしてビューに添付されています。

+0

これは近いです!あなたのコメントは正しい道を私に導いた(私は思う)。私は人のデフォルトのコンストラクタにpersonJSONを渡してしまいました。 –

0

通常、あなたは、モデルのコレクションを経由してモデルを取得し、ビューに渡す:

var person=personCollection.find(1); 
var view=new PersonView({model: person}); 
var personView = Backbone.View.extend({ 
    template: JST['personTemplate'], 
    render: function(){ 
    this.$el.html(this.template(this.model.toJSON())); 
    return this; 
    } 
}); 
$('#container').html(personView.render().el); 
関連する問題