自定义控件 UI5 的 JSONModel 的侦听器

Listener for the JSONModel for Custom Control UI5

我有一个自定义控件需要如下数据数组

properties : {
            scrollheight: {type : "sap.ui.core.CSSSize", defaultValue : "100%"},
            array1 :{type : "Array", defaultValue : []},
            array2 : {type : "Array", defaultValue : []},
        }

我有 3 个 JSONModel,我已将其设置为视图

问题是我需要处理这些模型,我必须制作 2 个数组来设置自定义控件。

当这些 JSONModel 发生任何变化时,我也需要更新数组。

如果我将这些绑定到 属性,我该如何实现?还是我需要监听模型的变化并更新数组?

或者他们还有其他方法吗?

有时很难使 JSONModel 中的数据与控制器保持一致,因为您始终必须记住,如果更改一件事,则还必须更改另一件事。

为了使控制器代码不那么混乱,我通常创建一个 JSONModel 的子类,在其中处理模型的一致性。这可以通过用您自己的方法覆盖 setProperty 方法来实现,当您看到某个 属性 被编辑时,相关属性也会立即更改。

请在下面的 jsbin 中找到一个示例,说明它是如何工作的。在示例中,我试图使 属性 2 与 属性 1:

保持一致

http://jsbin.com/novepa/1/edit?html,output

我通过获取绑定和附加更改事件解决了这个问题

我们必须获取模型中特定项目的绑定,如果它 属性 我们可以采用 PropertyBinding if its List or array we have to take ListBinding

然后我有一个模型设置为自定义控件,更改事件将更新自定义控件模型

JSBin 显示如何将更改事件添加到绑定(这里我使用了 ListBinding)