SAPUI5在详细信息视图中获取当前上下文

时间:2014-06-20 10:15:48

标签: javascript model-view-controller sap sapui5

我有一个带有主视图和详细视图的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()

它返回包含所有产品的模型。我如何知道用户当前正在查看哪一个?

3 个答案:

答案 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();