2

私は働いてMarionetteいますが、次の問題があります。

2 つの異なる領域を持つレイアウトを作成しました。レイアウトでは、レイアウトの2initializeつの領域に 2 つのビューが読み込まれます。ViewAと言うViewB。イベント内ViewAでトリガーされます。イベントはレイアウトによって消費されて切り替わり、他の 2 つのビューが挿入されます。ViewCと言うViewD。切り替えが実行されるたびに、私が適用したのと同じスタイル (CSS も) がViewCありViewDません。特に、jQuery Mobile スタイルは適用されません。何かアドバイス?

コメントが重要な部分を強調するコードを次に示します。

onConfirm : function() {        
        this.leftView =  new ViewC();
        this.rightView = new ViewD();

        this.leftRegion.show(this.leftView);                                                                        
        this.rightRegion.show(this.rightView);

        // FIX calling trigger('create') seems fix the problem. Why? Is this correct?
        this.$el.trigger('create');
    },

initialize : function() {
        // listen for event triggered from ViewA
        // e.g. GloabalAggregator.vent.trigger("ga:confirm");
        // where "ga:confirm" is a simple string
        GloabalAggregator.vent.on("ga:confirm" , this.onConfirm, this);  

        this.leftView =  new ViewA(), // creating here a new ViewC the style is applied correctly
        this.rightView = new ViewB(); // creating here a new ViewD the style is applied correctly
    },

onRender : function () {
        this.leftRegion.show(this.leftView);                                                                        
        this.rightRegion.show(this.rightView);
    }

編集

電話をかけるtrigger('create')と問題が解決するようです。なんで?これは正しいです?

4

1 に答える 1

1

ページに新しい html を追加するとき (レンダリングされた新しいビューを追加する、ビューを他のビューに交換するなど)、jQuery モバイルにこれを知らせる必要があります。

「作成」イベントは、jQuery Mobile ウィジェットで「生の」html を強化するために使用されます。詳細については、http: //jquerymobile.com/demos/1.0/docs/pages/page-scripting.htmlを参照して ください。「新しいマークアップの強化」セクションを探してください。

于 2013-08-02T12:50:33.010 に答える