2016-08-02 59 views
0

我是SAPUI5的新手。我有兩個控制器participantList.controller.js和Topic.controller.js。我已經在participantList.js中定義了名爲refreshData的函數,我試圖調用該函數Topic.Controller.js。總體而言,我在ParticipantList視圖中設置了頂級進度指標。因此,每次當我從主題視圖導航到參與者視圖時,通過選擇主題視圖上的主題,我想重新啓動參與者視圖上的進度指示器。請幫忙!在SAPUI5中按下重新啓動進度指示器按鈕選擇?

這裏是ParticipantList.controller.js代碼:

var reset; 
var list; 

sap.ui.define([ 
    "fiveminuteapp/controller/BaseController", 
    "fiveminuteapp/controller/Topic.controller" 
], 

function(BaseController, participant) { 
    "use strict"; 


    return BaseController.extend("fiveminuteapp.controller.participant.ParticipantList", { 

     onInit: function() { 

      var topicheader = this.byId("employeeListPage"); 
      topicheader.setTitle(topic); 

      this.listfunction(); 
      this.testFunction();    
     }, 

     refreshData: function() { 
      clearInterval(reset); 
      lTime.setText("5:00"); 
      setInterval(reset); 

     },   

     testFunction: function() { 
      var setMinutes = 5; 
      var originalTime = setMinutes * 60; 
      var time = originalTime; 
      var lTime = this.byId("labelTimeLeft"); 
      var progress = this.byId("progressIndicator"); 

      reset = setInterval(function() { 
       var minutes; 
       var seconds; 

       if (time > -1) { 
        minutes = Math.floor(time/60); 
        seconds = time % 60; 
        time = time - 1; 

        if (minutes < 10 && seconds < 10) { 
         lTime.setText("0" + minutes + ":" + "0" + seconds); 
        } else if (minutes < 10) { 
         lTime.setText("0" + minutes + ":" + seconds); 
        } else if (seconds < 10) { 
         lTime.setText(minutes + ":" + "0" + seconds); 
        } 
        progress.setPercentValue((time/originalTime) * 100); 

       } else { 
        clearInterval(reset); 
        lTime.setText("5:00"); 
        setInterval(reset); 
        if(lTime.getText() === "00:00"){ 
         $.ajax({ 
          type: "post", 
          data:{username: username}, 
          url:"/fiveminuteapp/AddPoints" 
         }) 

        } 
       } 
      }, 1000); 
     }, 

     listfunction: function(){ 
      var test = this.getView().byId("participantList"); 
      setInterval(function(){ 
       var aData = $.ajax({ 
        type: "get", 
        data:{topic : topic}, 
        contentType : "application/json", 
        url:"/fiveminuteapp/RetrieveName", 
        dataType: "json", 
        async:false, 
       }).responseJSON; 

       var oModel = new sap.ui.model.json.JSONModel(aData); 
       test.setModel(oModel, 'listmodel') 

      },5000) 
     } 
    }); 
}); 

這裏是Topic.Controller.js代碼:

sap.ui.define([ 
    "fiveminuteapp/controller/BaseController", 
    "fiveminuteapp/controller/participant/ParticipantList.controller" 
], function(BaseController, participant) { 
    "use strict"; 

    return BaseController.extend("fiveminuteapp.controller.Topic", { 
     onNavToParticipant: function(oEvent) { 
      var otime = window.originalTime; 
      var oItem = oEvent.getSource(); 
      var oContext = oItem.getBindingContext("topics"); 
      var topicSelected = oContext.getProperty("TopicChoices"); 

      topic = topicSelected; 

      $.ajax({ 
       type: "post", 
       data:{username: username, topic : topic}, 
       url:"/fiveminuteapp/InsertTopic" 
      }) 


      this.getRouter().navTo("participantList"); 
      var time = participant.refreshData(); 
      //sap.ui.controller("ParticipantList.controller.js").refreshData(); 
     } 
    }); 
}); 

Topic view

Participant view

回答

0

我假定您在應用程序中使用路由。如果是,則可以將路由模式匹配處理程序附加到特定路由,每次匹配特定路由時,框架將調用哪些處理程序。

ParticipantList.controller.js onInit()方法註冊一個處理程序:

oRouter.getRoute("participantList").attachPatternMatched(this._onRouteMatched, this); 

然後用名_onRouteMatched()實現ParticipantList.controller.js處理函數本身:

_onRouteMatched: function (oEvent) { 
    this.refreshData(); 
} 

更多細節可以發現in the official UI5 documentation

相關問題