2014-10-02 93 views
2

我想實現一個新的控制器,它將重新定義現有控制器中的某些方法。SAPUI5 - 擴展sap.ui.controller實現

讓說我有:

MyForm.controller.js

sap.ui.controller("MyForm", { 

    showMyName: function() { 
     alert("MyForm.showMyName"); 
    }, 

    onSearch: function(oEvent) { 
     // Do something... 
    }, 

}); 

我想一個新的MyNewForm控制器,將覆蓋的方法showMyName但將繼承onSearch方法。 任何想法如何實現?

在此先感謝。

回答

4

它的工作原理是這樣的:

基地控制器的

代碼:

sap.ui.core.mvc.Controller.extend("MyForm", { 
    showMyName: function() { 
     alert("MyForm.showMyName"); 
    }, 
    //Further functions .... 
}); 

使用MyForm的作爲基地MyNewForm控制器代碼:

//require the base first 
jQuery.sap.require("MyForm"); 

//extent the base 
MyNewForm.extend("MyForm", { 
    onInit : function() { 
     this.showMyName(); //alerts 
    } 
}) 

在這個demoapp你看到它在行動: https://sapui5.netweaver.ondemand.com/sdk/test-resources/sap/m/demokit/tdg/index.html?responderOn=true 尋找util/Controller.js作爲基類 和查看/馬斯特r.Controller.js作爲類的用法。

此致

+0

這個偉大的工程,**感謝**我已經查這個例子,而是因爲這是我已經錯過了代碼不起作用,因此,僅供將來參考的一些指針:** 1)**基礎控制器類不以sufix .controller.js結尾,它只是一個常規的.js文件; ** 2)**基本控制器不能直接用作視圖的控制器類。 – mjd 2014-10-06 11:07:11

+0

這真的很有幫助。 – 2016-10-28 13:59:20

0

通過調用方法sap.ui.controller("MyForm", {}), 的「MyForm的」控制器沒有定義,並且是在執行範圍從不可用。
其中 sap.ui.core.mvc.Controller.extend("MyForm", {})定義了函數並由「MyForm」引用,並且已經在其上定義了擴展。

1

我覺得應該是:

MyForm.extend(「MyNewForm」,{