setBindingContext()的用法是什么?与元素绑定的区别是什么?

时间:2015-07-08 03:25:50

标签: sapui5

在OpenUI5 demokit的 1.5.2.3定义绑定路径部分中:

  

在聚合绑定的情况下,聚合的每个条目都存在上下文,或者可以使用setBindingContext方法为控件显式设置上下文。

在OpenUI5 demokit的 1.5.3.3元素绑定部分中:

  

元素绑定允许将元素绑定到模型数据中的特定对象,这将创建绑定上下文并允许控件及其所有子元素之间的相对绑定。

在我看来,这两种技术实际上做同样的事情。它们都为控件创建绑定上下文,以便包含控件的绑定将相对于它进行解析。但它们之间的区别是什么?在什么情况下他们中的任何一个会发挥作用?

setBindingContext 在以下代码中不起作用:
https://jsbin.com/bigope/edit?html,output
但是,如果我将 oPanel.setBindingContext(“/ nameinfo”); 更改为 oPanel.bindElement(“/ nameinfo”); ,它会起作用,为什么?

1 个答案:

答案 0 :(得分:8)

setBindingContext要求您传递这样的上下文:

oPanel.setBindingContext(new sap.ui.model.Context(oModel, "/nameinfo"));

这两者之间的区别是概念性的。 绑定上下文用作该Control或其子项中所有绑定(对于该模型)的父上下文。它只包含对使用的模型的引用,(路径的一部分)和可选的另一个父上下文。在创建相对绑定时使用它。

另一方面,bindElement方法的行为与其他所有bind *方法相同。 它创建了一个绑定(在本例中为ContextBinding),它允许更改事件,数据绑定等。 此外,创建的ContextBinding也可以作为其他绑定的BindingContext,就像使用setBindingContext添加的Context一样。

根本没有混淆,对吧;)?

阅读ManagedObject的代码可能有助于您更好地理解内部。 (bindObject = bindElement)