Sapui5 JSONModel上的setProperty()未触发属性更改事件

Sapui5 JSONModel上的setProperty()未触发属性更改事件,sapui5,Sapui5,我在控制器中使用了一个模型,并在该模型上设置了模型更改和属性更改事件函数,如下所示: onInit: function() { var oData = { "Products": [ { "ProductID": 1, "ProductName": "Chai", "SupplierID": 1, "CategoryID": 1, "Q

我在控制器中使用了一个模型,并在该模型上设置了模型更改和属性更改事件函数,如下所示:

onInit: function() {
    var oData = {
        "Products": [ 
        {
            "ProductID": 1,
            "ProductName": "Chai",
            "SupplierID": 1,
            "CategoryID": 1,
            "QuantityPerUnit": "10 boxes x 20 bags",
            "UnitPrice": "18.0000",
            "UnitsInStock": 39,
            "UnitsOnOrder": 0,
            "ReorderLevel": 10,
            "Discontinued": false
        }    
    ]
    };

    var oModel = new sap.ui.model.json.JSONModel();
    oModel.setData(oData);
    this.attachModelEventHandlers(oModel);
}

attachModelEventHandlers: function(oModel){
    oModel.attachPropertyChange(this.handlePropertyChanged, this);
    var binding = new sap.ui.model.PropertyBinding(oModel, "/", oModel.getContext("/"));
    binding.attachChange(this.handleDataChanged, this);
},

handlePropertyChanged: function(oEvent) {
    // Do whatever here...
}

handleDataChanged: function(oEvent) {
    // Do whatever here...
}
我把模型绑在桌子上,一切都很好。。。如果更新属性,则会触发相关的模型更改和属性更改事件

但是,如果我使用以下类似的方法更新属性,则只有
handleDataChanged
事件函数将启动,而不是
handlePropertyChanged
事件函数:

oModel.setProperty("Products/0/ProductName", "SomeNewValue");

知道为什么吗?我的属性绑定是否正确?

SAPUI5文档建议了一个描述属性值更改原因的原因参数。当您使用一些控件(如本例中的表)使用双向绑定更新模型时,将触发propertyChange事件,原因是sap.ui.model.ChangeReason.Binding。文档还指出,当前仅当属性绑定的值发生双向更改时才会触发该事件。因此,直接设置model属性不会触发事件


您可以在

中查看事件>属性更改。当与控件一起使用时,reason参数和propertyChange事件确实可以正常工作……我已经阅读了您链接到的文档,现在更加困惑了。。。正如它在开始时明确指出的:“当模型中的属性值发生更改时,'propertyChange'事件被触发。”。哪里提到使用
setProperty()
不会触发属性更改事件?另外,我也乐于接受解决这个问题的最佳方法,即根据颜色选择器对话框中的选择,设置绑定到图标控件颜色值的模型属性的值“当前,事件仅在sap.ui.model.ChangeReason.Binding原因下激发,该原因在属性绑定的值发生双向更改时激发。“因此,当您更改控件属性时,您正在更改属性绑定值。但是,使用setProperty直接更改模型的属性并不表示绑定更改。按照我的理解,事件当前会以特定原因触发
sap.ui.model.ChangeReason.binding
。。。但这并不意味着我就不应该。。。但我再次相信,在这种特殊情况下,文档可能会更清晰。还提到setProperty应将模型属性更改通知所有相关方。。。在我看来,这应该包括在模型上为此注册的事件处理程序。在任何情况下,对处理这一问题有何建议?扩展JSONModel以在我的案例中触发事件?