如何重置事件而不重新加载页面?

时间:2016-08-31 09:30:19

标签: javascript jquery sapui5

我有2个XML视图。在第一个是输入字段和按钮导航到第二个视图。在第二个视图是表。当我在第一个视图中按下按钮时,我将过滤器参数推送到第二个视图,并使用beforeRebindTable应用过滤器。在第二个视图中,我有按钮导航回第一个视图。但是当我在输入字段中更改值时,不会发送新的查询。它只是导航我到第二个视图。

所以我的问题是,如何重置或刷新按钮事件以便我可以在不重新加载页面的情况下发送新查询?

这是第一个视图中按钮的事件。

navToSecond : function (oEvent){
        var oModel = new sap.ui.model.json.JSONModel();
        oModel.setProperty("/First", this.getView().byId("inp").getValue());
        sap.ui.getCore().setModel(oModel, "Filter");
        this.getRouter().navTo("second"); 

2 个答案:

答案 0 :(得分:0)

您能否显示用数据填充模型的代码?

您需要再次执行此功能。它不必在您的导航事件之前,因为数据绑定将自动更新。以下应该有效:

    navToSecond : function (oEvent){

    var oModel = sap.ui.getCore().getModel("Filter");
    if (oModel ){
    jQuery.ajax( {
        url: "my/data/url",
        success: function(data,status,jxXHR){
//this is an example with an AJAX call, but the point is loading new json data into your model
    oModel.setData(data);
    },
        type: "GET",
        contentType: "application/json; charset=utf-8"
      });
    } else {
      oModel = new sap.ui.model.json.JSONModel();
      sap.ui.getCore().setModel(oModel, "Filter");
      oModel.setProperty("/First", this.getView().byId("inp").getValue());
    }
            this.getRouter().navTo("second"); 
    }

答案 1 :(得分:0)

在将属性存储为“过滤器”模型之前设置属性。因此,变更事件提前解雇并迷失。但是为什么你要在每个回合中创建一个新模型?

navToSecond : function (oEvent){
    var oModel = sap.ui.getCore().getModel(oModel, "Filter");
    if (!oModel) {
        oModel = new sap.ui.model.json.JSONModel();
        sap.ui.getCore().setModel(oModel, "Filter");
    }
    oModel.setProperty("/First", this.getView().byId("inp").getValue());
    this.getRouter().navTo("second");
    }