2014-10-02 1 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 .... 
}); 

код контроллера MyNewForm с использованием MyForm в базе:

//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 look for util/Controller.js в качестве базового класса и для просмотра/Maste r.Controller.js как использование класса.

С наилучшими пожеланиями

+0

Это прекрасно работает, ** Спасибо ** Я уже проверил этот пример, но потому, что что-то я пропустил код не работает.Так что только некоторые указатели для будущей ссылки: ** 1) ** Класс базового контроллера не заканчивается sufix .controller.js, это просто обычный .js-файл; ** 2) ** Базовый контроллер нельзя использовать непосредственно в качестве класса контроллера для представления. – mjd

+0

Это действительно полезно. –

0

с помощью вызова метода sap.ui.controller("MyForm", {}), «MyForm» контроллер не определен и никогда не доступны в рамках исполнения.
В тех случаях, когда sap.ui.core.mvc.Controller.extend("MyForm", {}) определяет функцию и передается в соответствии с «MyForm» и имеет на ней определение.

1

Я думаю, что это должно быть:.

MyForm.extend («MyNewForm», {