在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”); ,它会起作用,为什么?
答案 0 :(得分:8)
setBindingContext
要求您传递这样的上下文:
oPanel.setBindingContext(new sap.ui.model.Context(oModel, "/nameinfo"));
这两者之间的区别是概念性的。 绑定上下文用作该Control或其子项中所有绑定(对于该模型)的父上下文。它只包含对使用的模型的引用,(路径的一部分)和可选的另一个父上下文。在创建相对绑定时使用它。
另一方面,bindElement
方法的行为与其他所有bind *方法相同。
它创建了一个绑定(在本例中为ContextBinding
),它允许更改事件,数据绑定等。
此外,创建的ContextBinding
也可以作为其他绑定的BindingContext,就像使用setBindingContext添加的Context一样。
根本没有混淆,对吧;)?
阅读ManagedObject的代码可能有助于您更好地理解内部。 (bindObject = bindElement)