0

ネストされたレイアウトのアプリがあります。トップレベルのレイアウトはアプリレベルにあり、セカンドレベルはそのリージョンの1つにあります。2番目のレベルのレイアウトを表示すると、イベントをトリガーして2番目のレベルのレイアウトの領域を表示します。これは最初は問題なく機能しますが、第2レベルのレイアウトを他のビューまたはレイアウトと交換して再度表示すると、失敗します。問題はhttp://jsfiddle.net/mzafer/VLY4t/で再現されます

画面で「Content1」をクリックしてから「Content2」をクリックします。2番目のレベルのレイアウトの領域が表示されます(「これは実際のregion1コンテンツです」および「これは実際のregion2コンテンツです」)。次に、[Content1]、[Content 2]の順にクリックします。今回は、実際のコンテンツは表示されず、プレースホルダーのみが表示されます。2回目は、「thisView.region1」が未定義です。

リージョンが未定義になる原因は何ですか?

ありがとうZafer

4

1 に答える 1

2

コードには 2 つの問題があります。

まず、イベントの適切な管理を確実にするためMyApp.vent.bindTo()に代わりに使用する必要があります。MyApp.vetn.bind()

次に、レイアウト ビューを閉じたときにイベントからバインドを解除する必要があります。現在起こっていることは、バインドを解除しないため、閉じられたビュー (最初のインスタンス) が存在しなくなった領域要素にアクセスしようとすることになります。

将来的には、ステートメントに追加することでこれを検出できthis.cidます。console.log例えば:

console.log('Responding to an event.', this.cid);

上記の2つの変更を加えて、コードを調整して機能させました:http://jsfiddle.net/VLY4t/14/

于 2012-08-22T23:48:28.400 に答える