1

私はBackboneJSを学んでいます。少し質問があります。コントローラーまたはモデルが変更された後に完全なビューを再レンダリングすることは一般的なことですか?また、レンダリング関数の開始時にコンテナをクリアする必要がありますか?

4

2 に答える 2

1

1)ビュー自体が適度にアトミックである限り、ビューの一部を更新するよりも、ビュー全体を再レンダリングする方が実際には簡単です。

2)いいえ、コンテナをクリアする必要はありません。バックボーンとは関係ありませんが、jQueryなどのDOMライブラリと、ハンドルバーなどのテンプレートエンジンとは関係ありません。だからあなたがすることはどちらかです

this.$el.html(this.template(data)); // template is a compiled Handlebars template

また

this.$el.html($('<div />').text('Whatever'); // using jQuery

いずれの場合も$el.html、ビューのターゲット要素にHTMLを再挿入します。

于 2012-06-26T00:26:53.770 に答える
1

まず、レンダリング機能の開始時にコンテナをクリアする必要はありません(もちろん、コンテナをクリアしたい場合を除きます)。

最初のポイントは、明らかに状況(ビューの複雑さ)によって異なりますが、ビュー全体を前のコンテンツに上書きして再レンダリングするだけでよい場合もありますが、そうする必要はありません。backbone.jsでは、特定の属性の変更をリッスンできます。DOM要素にアクセスできるので、それに応じてビューの一部を更新するだけです。

例えば

initialize : function () {    _.bind("change:name", nameChanged, this); },

nameChanged: function(event) {    this.$el.find('.name').val(this.model.get('name'); }
于 2012-06-25T21:53:56.573 に答える