Sapui5 如何在组件环境中设置XML视图的ID?
我想从带有一些实用功能的自定义模块访问视图的控制器。基本上你可以这样做:Sapui5 如何在组件环境中设置XML视图的ID?,sapui5,Sapui5,我想从带有一些实用功能的自定义模块访问视图的控制器。基本上你可以这样做: var oController = sap.ui.getCore().byId("__xmlview1").getController(); 问题在于,上述编码在实际环境中无法工作,因为\uuuxmlview1是由框架动态创建的。因此,我尝试在实例化期间设置视图的ID。问题是-我找不到一个: 尝试在view.xml文件中为视图指定ID无效: <mvc:View controllerName="dividen
var oController = sap.ui.getCore().byId("__xmlview1").getController();
问题在于,上述编码在实际环境中无法工作,因为\uuuxmlview1
是由框架动态创建的。因此,我尝试在实例化期间设置视图的ID。问题是-我找不到一个:
尝试在view.xml文件中为视图指定ID无效:
<mvc:View
controllerName="dividendgrowthtools.view.dividendcompare"
id="testID"
xmlns="sap.m"
...
问题是我不能直接控制XML视图的实例化——路由器分别负责的组件
那么,有解决这个问题的办法吗?或者至少是一种通过提供视图名称来获取视图ID的保存方式?您应该看看SAPUI5 我很确定,您希望让控制器对dividentcompare视图执行某些操作。使用SAPUI5事件总线,您可以在不使用MVC模式的情况下将操作从一个控制器发布到另一个控制器 在dividendcompare.controller.js中:
onInit : function() {
var oEventBus = sap.ui.getCore().getEventBus();
oEventBus.subscribe("MyChannel", "doStuff", this.handleDoStuff, this);
[...]
},
handleDoStuff : function (oEvent) {
var oView = this.getView();
[...]
}
onTriggerDividendStuff : function (oEvent){
var oEventBus = sap.ui.getCore().getEventBus();
oEventBus.publish("MyChannel", "doStuff", { [optional Params] });
}
现在,在您的anothercontroller.controller.js中:
onInit : function() {
var oEventBus = sap.ui.getCore().getEventBus();
oEventBus.subscribe("MyChannel", "doStuff", this.handleDoStuff, this);
[...]
},
handleDoStuff : function (oEvent) {
var oView = this.getView();
[...]
}
onTriggerDividendStuff : function (oEvent){
var oEventBus = sap.ui.getCore().getEventBus();
oEventBus.publish("MyChannel", "doStuff", { [optional Params] });
}
现在,您可以在任何情况下从应用程序的每个其他控制器从dividentcontroller获取视图。您不直接访问视图,这将阻止MVC模式,但可以将选项传递给其控制器并在那里进行处理。您应该看看SAPUI5 我很确定,您希望让控制器对dividentcompare视图执行某些操作。使用SAPUI5事件总线,您可以在不使用MVC模式的情况下将操作从一个控制器发布到另一个控制器 在dividendcompare.controller.js中:
onInit : function() {
var oEventBus = sap.ui.getCore().getEventBus();
oEventBus.subscribe("MyChannel", "doStuff", this.handleDoStuff, this);
[...]
},
handleDoStuff : function (oEvent) {
var oView = this.getView();
[...]
}
onTriggerDividendStuff : function (oEvent){
var oEventBus = sap.ui.getCore().getEventBus();
oEventBus.publish("MyChannel", "doStuff", { [optional Params] });
}
现在,在您的anothercontroller.controller.js中:
onInit : function() {
var oEventBus = sap.ui.getCore().getEventBus();
oEventBus.subscribe("MyChannel", "doStuff", this.handleDoStuff, this);
[...]
},
handleDoStuff : function (oEvent) {
var oView = this.getView();
[...]
}
onTriggerDividendStuff : function (oEvent){
var oEventBus = sap.ui.getCore().getEventBus();
oEventBus.publish("MyChannel", "doStuff", { [optional Params] });
}
现在,您可以在任何情况下从应用程序的每个其他控制器从dividentcontroller获取视图。您不直接访问视图,这将阻止MVC模式,但可以将选项传递给其控制器并在那里进行处理