2016-10-19 26 views

答えて

2

(あなたはXMLビューを使用している場合は、「__xmlview42」のようなもの)あなたのコントロールの識別子は、ビューの識別子が含まれている場合は、それを抽出して呼び出すことができます。

sap.ui.getCore().byId("__xmlview42") 

含まれているビューを取得します。識別子が存在しない場合は、識別子にView識別子が含まれるコントロールがあるまで、

を使用してコントロールツリーをナビゲートできます。ビューに達するまでコントロールツリーをナビゲートすることもできます。

フラグメントの場合、コンテンツが親ビューの一部になるため、これは機能しません。

+0

hm ...ビューには、コンポーネントプレフィックスが付いている可能性があります。残念ながら、フラグメント内のコントロールには、プレフィックスはなく、フラグメントからも依存したビューからでも表示されません。 – cschuff

4

ビューを見つけるまで親を歩くことができます。しかし、識別子に頼るべきではありません。ビューを識別するためにクラスまたはメタデータを使用します。

buttonPress: function(oEvent){ 
    var b = oEvent.getSource(); 
    while (b && b.getParent) { 
     b = b.getParent(); 
     if (b instanceof sap.ui.core.mvc.View){ 
     console.log(b.getMetadata()); //you have found the view 
     break; 
     } 
    } 
    } 

JSBinに。

フラグメントはコントロールツリーに追加されません。だからあなたはそれらを見つけることができません。ただし、追加されたビューを見つけることができます。

+1

長いストーリーの短い:エレガントな方法はありません...とにかく – cschuff

関連する問題