3

私はビューに素晴らしいLayoutManagerでBBBを使用しています。残念ながら、特定のサブビューを再レンダリングする方法が見つかりません。これが私の設定です:

Home.Views.Layout = Backbone.Layout.extend({
    template: "home/home",
    el: "#main",
    views: {
        "#left-menu-container": new Home.Views.Leftmenu(),
        "#searchbox": new Home.Views.Searchbox(),
        "#content": new Home.Views.Content()
    }
});

Home.HomeView = new Home.Views.Layout();
Home.HomeView.render();

Home.Views.AddEditPatient = Backbone.View.extend({
    template: "......",
    events: {
        'click .dosomething': 'dosomething'
    },
    dosomething: function(){
        // [dosomething]

        // Only Render Sub-View, e.g. #content here...
   }
});

レイアウト全体を再レンダリングしたくないのですが、Home.HomeView.render()を再度呼び出すとどうなりますか?この設定でサブビューのみをレンダリングするにはどうすればよいですか?

4

3 に答える 3

2

私はあなたがbackbone.layoutmanagerでこのようなことをするために追加したいと思います

thisLayout.setView("#content", new View()).render();

backback.layoutmanagerv0.6.6のドキュメントが役立つ場合があります http://documentup.com/tbranyen/backbone.layoutmanager/#usage/nested-views

http://vimeo.com/32765088もチェックし てください

于 2013-02-14T16:33:57.287 に答える
0

私があなたの質問を正しく理解しているなら、あなたはあなたの何かをする機能でこれをすることができます:

this.$("#divToRenderTo").html(new subView().render().$el);

必ず「これを返してください」と言ってください。サブビューのレンダリング関数の最後に。

于 2013-02-14T14:58:30.170 に答える
0

私が一般的にlayoutmanagerでこれを行う2つの方法があります:

  1. 初期化関数でビューをインスタンス化し、beforeRenderのビューにドロップします。これにより、ビューからサブビューにアクセスできるため、サブビューを直接レンダリングできます。

    initialize: function() {
        this.subview = new SubView();
    },
    beforeRender: function() {
        this.insertView(this.subview);
    },
    doSomething: function() {
        this.subview.render();
    }
    
  2. を使用view.getView(#selector)して埋め込みビューを返し、その上でrenderを呼び出すことができます。

    doSomething: function() {
        this.getView('#content').render();
    }
    
于 2014-03-13T00:38:23.357 に答える