如何重置导航控件

时间:2017-10-30 20:12:19

标签: sapui5

我有一个包含三个不同页面的UI5应用程序。

  1. 用户在第一页上输入内容,点击按钮然后转到第二页。
  2. 他们按下另一个按钮,然后转到第三页。
  3. 他们可以回到之前的页面。
  4. 我遇到的问题是,当第二次尝试返回页面时,My CoolVC函数不会被调用。看起来浏览器会将数据缓存在屏幕上,并且不会按我的意愿重置值。我必须刷新浏览器才能使其正常工作。

    这是我的路由配置:

     const menu = $('.menu_list li');
     const pages =$('.pages').children();
    
     menu.each(function( index ) {
       $(this).on('click', () =>{
         pages[i].addClass('show');
       });
     })
    

    以下是我切换页面的不同控制器的代码片段

    控制器1

    onInit()

    控制器2

    routing: {
      config: {
        routerClass: "sap.m.routing.Router",
        viewPath: "BatchProcessing.view",
        controlId: "rootControl",
        controlAggregation: "pages",
        viewType: "XML"
      },
      routes: [
        {
          name: "page1",
          pattern: "",
          target: "page1"
        },
        {
          name: "page2",
          pattern: "Page2",
          target: "page2"
        },
        {
          name: "page3",
          pattern: "Page3",
          target: "page3"
        }
      ],
      targets: {
        page1: {
          viewName: "InputsView",
          viewLevel: 0
        },
        page2: {
          viewName: "TableView",
          viewLevel: 1
        },
        page3: {
          viewName: "DetailsView",
          viewLevel: 3
        }
      }
    }
    

    控制器3

    onToPage2 : function () {
      this.getOwnerComponent().getRouter().navTo("page2");
    },
    

    有没有办法更新/清除路由,所以当我回到页面时,一切都很新鲜?

1 个答案:

答案 0 :(得分:1)

在控制器中使用Router的attachRouteMatched()/ attachRoutePatternMatched()方法来重置数据,例如:

onInit: function() {
    sap.ui.core.UIComponent.getRouterFor(this)
        .attachRoutePatternMatched(this.onRouteMatched, this);
},

onRouteMatched: function(oEvent) {
    this.sRouteName = oEvent.getParameters().name;
    // Check route and reset your data
}

https://sapui5.hana.ondemand.com/#/api/sap.ui.core.routing.Router