Sapui5 ui5中的绑定、上下文、上下文绑定和绑定上下文
几天来,我一直在思考context、contextbinding和bindingcontext的内部结构以及它们之间的关系,我不确定我是否存在重大误解。也许你们中的一些人可以帮我解决。我把我的假设放在下面。首先我想说的是,我在这里总是使用oData模型 这就是我在阅读文档时所理解的: 上下文是对模型中数据对象的引用 绑定基本上是一个事件提供程序,它(在单向绑定的情况下)观察特定上下文的状态,并在更改/加载数据时发出事件。。。因此允许为特定上下文上的事件注册事件处理程序。就编程对象而言,有属性绑定和列表绑定(这是真的吗?或者列表绑定是所有相关的吗?) 无论如何,我的理解是列表绑定是组件聚合绑定的模型端,而属性绑定从组件和模型的角度都称为属性绑定(混淆?) 现在我不太明白的是: 上下文绑定Sapui5 ui5中的绑定、上下文、上下文绑定和绑定上下文,sapui5,Sapui5,几天来,我一直在思考context、contextbinding和bindingcontext的内部结构以及它们之间的关系,我不确定我是否存在重大误解。也许你们中的一些人可以帮我解决。我把我的假设放在下面。首先我想说的是,我在这里总是使用oData模型 这就是我在阅读文档时所理解的: 上下文是对模型中数据对象的引用 绑定基本上是一个事件提供程序,它(在单向绑定的情况下)观察特定上下文的状态,并在更改/加载数据时发出事件。。。因此允许为特定上下文上的事件注册事件处理程序。就编程对象而言,有属性绑定
new sap.ui.model.ContextBinding(oModel、sPath、oContext、mParameters?、oEvents?)
以路径和上下文作为参数。我假设这个oContext不完全是上面描述的上下文,而是绑定上的一些元数据。这是正确的吗?或者这是路径参数所对应的路径的定义
另一个看起来很奇怪的是,当您想要创建一个上下文本身时新的sap.ui.model.Contextabov(oModel、sPath、oContext)
再次获取一个上下文。
我相信这只是我看到的一个不幸的命名事件,但我不太确定
然后是contextbinding和bindingcontext。我假设contextBinding是对特定上下文的绑定,如e。bindingcontext是关于上下文或列表绑定的元数据
从编程的角度来看,我不理解为什么以下方法有效:
- 通过仅传递路径的
创建到上下文的列表绑定model.bindList()
- 将更改事件处理程序附加到绑定
- 在绑定时调用
get\u contexts()
- 在变更事件处理程序中接收数据(并查看模型中填写的oData属性)
model.bindProperty()
生成属性绑定。我可以生成绑定,但我收到的绑定似乎没有实际获取数据的句柄
我希望这番闲谈能解释我的问题。如果你问:你想做什么?实际上我不想对它做任何事情,我只是不太明白它是如何工作的。绑定到ui控件等等工作得很好,但我更愿意真正理解引擎盖下面是什么。我已经阅读了一些调试文件和单元测试,但和你们讨论它似乎也是一个很好的方式
如果这还不清楚,我很乐意添加任何有帮助的内容
干杯
米歇尔下面回答了您的问题。希望能有帮助
sap.ui.model.ContextBinding(oModel、sPath、oContext、mParameters?、oEvents?):
将路径和上下文作为参数。我假设这个oContext不完全是上面描述的上下文,而是绑定上的一些元数据。这是正确的吗?或者这是路径参数所对应的路径的定义sap.ui.model.context
sap.ui.model.context(oModel、sPath、oContext)
再次获取一个上下文。我相信这只是我看到的一个不幸的命名事件,但我不太确定 /**
* Constructor for Context class.
*
* @class
* The Context is a pointer to an object in the model data, which is used to
* allow definition of relative bindings, which are resolved relative to the
* defined object.
* Context elements are created either by the ListBinding for each list entry
* or by using createBindingContext.
*
* @param {sap.ui.model.Model} oModel the model
* @param {String} sPath the path
* @param {Object} oContext the context object
* @abstract
* @public
* @name sap.ui.model.Context
*/
var Context = sap.ui.base.Object.extend("sap.ui.model.Context",
/** @lends sap.ui.model.Context.prototype */ {
constructor : function(oModel, sPath){
sap.ui.base.Object.apply(this);
this.oModel = oModel;
this.sPath = sPath;
},
metadata : {
"abstract" : true,
publicMethods : [
"getModel", "getPath", "getProperty", "getObject"
]
}
});
- 通过model.bindList()仅传递路径创建到上下文的列表绑定
- 将更改事件处理程序附加到绑定
- 在绑定时调用get_contexts()
- 在变更事件处理程序中接收数据(并查看模型中填写的oData属性)
实际上,您还可以
将事件附加到sap.ui.model.PropertyBinding
,并且可以调用getValue()来获取数据。谢谢,Allen,这真的很有帮助。这实际上主要是对文档和getValue的混淆
要为仅隐式包含在标题中的问题添加另一个答案,请执行以下操作:
上下文绑定:设置到给定路径的绑定
绑定上下文:给定绑定的上下文,即来自组件或其他设置绑定的上下文
干杯
米歇尔