2017-04-06 8 views
1

私は2つのビューを持っています:master1ではアイテムのリストを表示し、アイテムをクリックするとmaster2に移動します。だから私は、単にダイアログを開いています、SAPUI5ナビゲーションと返信

  onRouteMatched : function(oEvent) { 
         var that = this; 
         var oParameters = oEvent.getParameters(); 

         if (oParameters.name === "master2") { 
           var oView = this.getView(); 
           var oDialog = oView.byId("dialogBaseInfo"); 

           if (!oDialog) { 

           oDialog = sap.ui.xmlfragment(oView.getId(),"ZABC.view.fragment.BaseInfo",this); 
           oView.addDependent(oDialog); 
                } 
              this.setCurrentDateTime(); 
              oDialog.open(); 

}

:私はこのコードを持っているonRouteMatchedでmaster2.jsで

   onSelect : function(oEvent) { 
         this.getRouter().navTo("master2", { 
           from : "master1", 
           zlonr : oLoadingOrder.LoNumber 
           }); 
       }, 

:コントローラmaster1.js内のコードは次のようになります。 ダイアログが開きますが、すぐにもう一度閉じられますが、それはmaster2の画面になります。デバッガにエラーはありません。 私のルーティングは次のようになります。

    pattern: "master1", 
        name: "master1", 
        view: "Master1", 
    //    viewLevel: 1, 
        targetAggregation: "pages", 
        clearControlAggregation: true, 
        targetControl: "masterAppId", 
        subroutes: [ 
        { 
         pattern: "zlonr/{zlonr}", 
         name: "master2", 
         view: "Master2", 
     //    viewLevel: 1, 
         targetAggregation: "pages", 

これがなぜ起こるか任意のアイデア?ダイアログはもちろん開いたままにして、そこで続けてください。ナビゲーションが発生したときに

答えて

0

しかし、それはデフォルトですぐ

再び閉じ、ルータによって作成されたtarget handlerは、自動的にすべてのダイアログインスタンスを閉じます。ターゲットハンドラは、この動作をsetCloseDialogsで変更する方法を提供します。このようsubroutesとして廃止されたプロパティを使用して回避しようと、他の予期しない動作のために

this.getRouter().getTargetHandler().setCloseDialogs(false); 

:「マスター2」に移動する前に、次の行を追加してみてください。代わりにtargets.yourTargetName.parentを使用します。 parentの使用方法については、this tutorial stepをご覧ください。また、は、sap.ui.ux3.Shellが使用されていない場合は使用しないでください。is deprecatedも同様です。

+0

こんにちは、ご意見ありがとうございます。それは右のように聞こえるが、それでもダイアログを閉じる。私はmaster2にナビゲートする前にこれを入れようとしましたが、master2のinitに入れようとしましたが、まだダイアログを閉じています。 – Tim

+0

@ティム:そうだね。あなたが問題を再現できるどこかのコードや最小限の例を投稿することができればうれしいです。それ以外の場合は、呼び出しスタックをデバッグして、どのモジュールからどのメソッド呼び出しがダイアログを破棄(またはクローズ)しているかを調べることができます。 – boghyon

+1

もう一度あなたの助けに感謝します。私はナビゲーションを行った直後にダイアログを呼び出さず、少しセットアップを変更しました。これを解決する別の方法を見つけることができませんでした。とにかく助けてくれてありがとう! – Tim

関連する問題