2017-06-05 9 views

答えて

1

要素の完全なリストを取得するのない現在の文書化方法はありません。要素は、コアインスタンス内のmElementsプライベートマップ(オブジェクト)に登録されます。 Core source codeの内部でこのオブジェクトの用途を確認することができます。それは決して方法によって直接外界にさらされることはありません。

通常、JavaScriptの慣例である「プライベート」アクセスレベルを回避するだけで、sap.ui.getCore().mElementsを実行できますが、この場合は機能しません。これは、コアが公開メソッドに対してプロキシのみを保持するInterface(クロージャを使用して)にラップされているためです。つまり、sap.ui.getCore()コールから実際のコアインスタンスを取得する方法がないため、そこからmElementsプロパティにアクセスすることはできません。

「生の」コアインスタンスを取得する方法はわかりません(通常、ここで防御プログラミングを行い、ユーザーにコア内部を邪魔することを意図していないSAPのユーザー)。それを何らかの方法で取得することができれば、この「プライベート」プロパティにアクセスして要素リスト(実際にはIDと参照の間のマップ)を取得できます。

0

このための公開APIはありません。

ページにルートビューがある場合は、コントロール集約ごとにゲッターを適用し、それらのすべてのコンテンツ(およびその他)を渡すことによって、ビューツリーを横断する再帰関数を作成できます。

公開集計名を取得するには、コントロールのgetMetadata()メソッドを使用できます。

このようにして、パブリック集計のコントロールにのみアクセスでき、内部のコントロールにはアクセスできないことに注意してください。

2

コントロールレジストリにインスタンスの完全なリストを取得する方法はありますか?

ちょっとした不正行為で、はい!

getAllRegisteredElements:() => { 
    let core; 
    const fakePlugin = { 
    startPlugin: realCore => core = realCore 
    }; 
    sap.ui.getCore().registerPlugin(fakePlugin); 
    sap.ui.getCore().unregisterPlugin(fakePlugin); 
    return core.mElements; 
}, 

API registerPlugin引数としてメソッドstartPlugin(及びstopPlugin)を含むオブジェクトを待ちます。コアが初期化されている間はすぐにinvokes the startPlugin methodになります。パラメータとして、mElementshint from Serbanのおかげで)によってすべての登録された要素の地図を得ることができます。

UI5 - get registered elements

関連する問題