私はbackbone.jsアプリケーションを開発しており、アプリケーションの各部分を表す多数のルータとビューを持っているところに達しています。以下の単純化されたルータの例では、私は2つの場所を持っています。 account
& users
。backbone.jsでビューをクリーニングしますか?
各場所の両方のビューで、内容が相互の要素(#appcontainer
)にレンダリングされます。私の常識では、それぞれのビューをremove
に確実にしてから、バインディングやDOMなどの衝突を防ぐために別のビューを起動する必要があります。
ビューがすでに作成されているかどうかはわかりませんが、previousView.remove()
をルータまたはビューから明示的に呼び出すことはできません。
各ビューのコンストラクタに$(this.el).empty()
を追加して、DOMの最終バインディングと要素をすべて除去するだけで十分ですか?
ここにルータの例がありますか?
var myRouter = Backbone.Router.extend({
routes: {
"account": "account",
"users": "users"
},
account: function() {
view = new AccountView({});
view.render();
},
users: function() {
view = new UserView({});
view.render();
}
});
こんにちは!ご回答有難うございます。 jQueryの '.remove()'メソッドを実行すると、ビューのバックボーン '.remove()'から自分自身が分離されますか? – Industrial
バックボーンの.remove()は、jqueryの.remove()のエイリアスに過ぎません。 – MrGrigg
@MrGrigg **レンダリングメソッドがどこに行くのかを明確にすることはできますか?それはルータ自体に入るように見えますが、私は確信しています... ** _私はこのコードの外観が本当に好きです。そして、一見すると、それはアプリケーションを構築する良い方法であるようです。 – Emerson