我有一个带有主视图和详细视图的SAPUI5拆分应用程序。
当我在侧栏中选择一个项目时,我将上下文传递给详细视图,让我们说产品1
onSelectProduct: function(evt){
sap.ui.getCore().getEventBus().publish("app", "refreshProductDetail", {context : evt.getSource( ).getBindingContext()});
},
这会触发跟随上下文的跟随函数:
refresh: function(channelId, eventId, data){
if (data && data.context) {
this.getView().setBindingContext(data.context);
}
},
现在,当我执行类似保存的操作时,我想获取模型中产品1的当前数据。
然而,当我使用
时this.getView().getBindingContext().getModel()
它返回包含所有产品的模型。我如何知道用户当前正在查看哪一个?
答案 0 :(得分:15)
您可以使用bindingContext的getPath()
来查看当前显示的对象:
this.getView().getBindingContext().getPath();
你可以这样做:
var bindingContext = this.getView().getBindingContext();
var path = bindingContext.getPath();
var object = bindingContext.getModel().getProperty(path);
如果您只想要显示对象的某个属性,则可以执行以下操作:
var property = bindingContext.getProperty("<nameOfProperty>");
返回特定上下文中对象的属性。
<强>更新强>
您只需调用bindingContext的getObject()
即可返回当前上下文指向的模型中的对象:
var object = bindingContext.getObject();
有关详细信息,请参阅documentation of Context。
答案 1 :(得分:0)
对于列表项“select”事件,要从绑定上下文中获取当前选定的项目记录,请使用:。
evt.getSource().getSelectedItem().getBindingContext("yourModelName").getObject();
答案 2 :(得分:0)
您还可以使用参数listItem
从事件中检索 BindingPath :
evt.getParameter("listItem").getBindingContextPath();