Sapui5 Can';无法从attachPropertyChange获取已更改的属性

Sapui5 Can';无法从attachPropertyChange获取已更改的属性,sapui5,Sapui5,我想知道中的哪个属性在被视图修改时发生了更改。 对于测试,我进行了OpenUI5演练,并在应用程序控制器中添加了以下行 oProductModel.attachPropertyChange( function(oEvent){ console.log("event: ", oEvent); }, this); 当我在文本输入中更改属性时,会调用attachPropertyChange中的函数,但当我在控制台中打印oEvent对象时,它是空的 我知道我可以连接到文本输入更改事件,但我想使

我想知道中的哪个属性在被视图修改时发生了更改。 对于测试,我进行了OpenUI5演练,并在应用程序控制器中添加了以下行

oProductModel.attachPropertyChange( function(oEvent){
   console.log("event: ", oEvent);
}, this); 
当我在文本输入中更改属性时,会调用attachPropertyChange中的函数,但当我在控制台中打印oEvent对象时,它是空的


我知道我可以连接到文本输入更改事件,但我想使用attachPropertyChange,以防同一模型有多个视图。

您可以对UI中的所有输入字段使用更改事件,并在控制器中写入事件处理方法。您将很容易在事件处理方法的oEvent中获得属性和值。我希望您能理解。

据我所知,您希望避免使用输入控件的
change
事件,因为没有关于模型中哪个属性已更改的信息。但是,您仍然可以通过以下方式在更改处理程序中获取所有这些信息:

  • event.getSource().getBinding(/*controlPropertyName*/).getPath()
    获取绑定属性的名称,或
  • event.getSource().getBindingContext(/*modelName*/).getPath(/*suffix*/)
    获取绑定上下文的路径。此处的
    getPath
    等待附加到上下文路径的可选后缀
如果属性绑定是相对的,您可以将这两个API组合起来以获得绝对路径。例如:

onInputChange: function(event) {
  const input = event.getSource();
  const property = input.getBinding("value").getPath(); // "myProperty"
  const absolutePath = input.getBindingContext().getPath(property) // "/0/myProperty"
},
演示
sap.ui.getCore().attachInit(()=>sap.ui.require([
“sap/ui/model/json/JSONModel”,
“sap/m/MessageToast”,
],(JSONModel,MessageToast)=>sap.ui.xmlview({
查看内容:`
`,
控制器:{
onChange:函数(事件){
这是showPropertyInfo({
bindingContext:event.getSource().getBindingContext(“myModel”),
propertyPath:event.getSource().getBinding(“值”).getPath(),
of:event.getSource(),
});
},
showPropertyInfo:({propertyPath,bindingContext,of})=>MessageToast.show(
`属性:“${bindingContext?propertyPath:propertyPath.substr(1)}”
绝对路径:“${bindingContext?bindingContext.getPath(propertyPath):propertyPath}”`{
持续时间:999999,
宽度:“18rem”,
在“底端”,
属于
}),
},
async:true,
}).setModel(新的JSONModel({
产品:[{
产品ID:“”,
}, {
产品ID:“”,
}, {
产品ID:“”,
}],
}),“myModel”).placeAt(“内容”)

我在xml定义()中添加了change callback,但是callback PrintEvent中的事件对象不包含关于模型中哪个属性已更改的信息。