Sapui5 导航时在控制器之间传递数据
我想在两个控制器之间传递数据(除了路由参数),我想知道正确的方法 例如:当我导航到patternSapui5 导航时在控制器之间传递数据,sapui5,Sapui5,我想在两个控制器之间传递数据(除了路由参数),我想知道正确的方法 例如:当我导航到pattern/order/{id}时,我在视图控制器中执行以下操作: this.getRouter().navTo("order", { id: sOrderId }); 我想传递额外的JSON对象,我不想成为路由参数的一部分 在这种情况下我该怎么办 --编辑 我想补充一下我想用这个实现的目标 我想把数据从主数据传递到细节。母版页和详细页都分配了单独的路由模式。因此,用户可以直接登录到master或deta
/order/{id}
时,我在视图控制器中执行以下操作:
this.getRouter().navTo("order", {
id: sOrderId
});
我想传递额外的JSON对象,我不想成为路由参数的一部分
在这种情况下我该怎么办
--编辑我想补充一下我想用这个实现的目标 我想把数据从主数据传递到细节。母版页和详细页都分配了单独的路由模式。因此,用户可以直接登录到master或detail。当他们登陆主控台时,用户可以选择一堆细节项目,并导航到第一个细节项目,然后从那里导航到他/她在主控台上早些时候选择的其他项目。所以我要传递的是从主控制器到细节控制器的选择
您可以创建本地模型(通常是JSONModel)并将其设置为应用程序组件内部
// inside Component.js
var model = new sap.ui.model.json.JSONModel({ foo: “bar”});
this.setModel(model);
在每个可以使用的控制器内部
var model = this.getOwnerComponent().getModel();
console.log(model.getProperty(“/foo”));
注意:如果要将选定关键帧从主视图传递到局部视图,请参见
使用客户端模型 通常,数据单独存储在模型中,而不是分配给局部变量并传递它们。然后,可以与任何可以访问模型的对象共享模型数据(例如,数据绑定视图)。 下面是一个客户端JSONModel示例:
“sap.ui5”:{
“模型”:{
“myModel”:{
“类型”:“sap.ui.model.json.JSONModel”
}
}
}
constdatatopass=/**/
this.getOwnerComponent().getModel(“myModel”).setProperty(“/data”,dataToPass);
patternMatched
处理程序上:
onInit:function(){
const orderRoute=this.getOwnerComponent().getRouter().getRoute(“订单”);
orderRoute.attachPatternMatched(this.onPatternMatched,this);
},
onPatternMatched:函数(){
/*用*/this.getOwnerComponent().getModel(“myModel”).getProperty(“/data”)做某事;
},
从
)和目标视图(到
)
您可以使用API传递数据。
以下是一个例子:
onInit:function(){
此.getView().addEventDelegate({
onBeforeHide:函数(事件){
const targetView=event.to;
常量dataToPass=/**/
targetView.data(“数据”,dataToPass);
}
},这个);
},
onInit:function(){
此.getView().addEventDelegate({
onBeforeShow:函数(事件){
/*用*/this.getView()数据(“数据”)做某事;
}
},这个);
},
相关文档主题:正是我想要做的。我们在第一个视图中选择表中的多个项目-单击编辑(在第一个视图中)-我们转到编辑详细信息页面-然后单击保存和下一步以浏览其余选定项目。这有意义吗?。我仍然在使用split应用程序,但它更像是master有订单-detail有订单详细信息+一些项目,选择项目进入项目详细信息。所以有三个层次。后端是oData,每个视图都绑定到正确的实体。我可以制作自己的原型,以便在时间允许的情况下让您查看,但一般来说,将每个选定的条目键存储在客户端模型中,然后通过这些键(->路径)绑定元素是一种方法。。这是我现在能想到的最“干净”的方式。好的,使用客户端JSON模型。