UI5中单向和一次绑定的区别

时间:2018-06-01 19:30:25

标签: sapui5

UI5中的一次性绑定和单向绑定有什么区别?

是否有任何用户特定的用例我会使用它们? 我无法从文档中获得太多信息。

1 个答案:

答案 0 :(得分:4)

Data binding modes in UI5

单向

  • 它的作用:单向数据流。模型数据中的更改(例如,通过setProperty)会稳定地传播到UI中感兴趣的元素。
  • 用例:一个突出的例子是device model(单向JSONModel)。它不应该接受任何可能意外更新设备信息的用户输入。

      

    我们必须将绑定模式设置为OneWay,因为设备模型是只读的,我们希望在将控件的属性绑定到它时避免意外更改模型。默认情况下,OpenUI5中的模型是双向的(TwoWay)。当属性更改时,绑定的模型值也会更新。

一次性

  • 它的作用:一次性数据流。在评估绑定对象时,会读取其对应的模型数据并将其写入元素属性一次,而不会再次写入。
  • 为什么存在:这一切都取决于更改侦听器的数量。较少的侦听器意味着更少的内存分配和更少的运行时维护的东西。因此,与其他绑定模式相比,绑定模式OneTime具有优化性能和内存消耗的潜力。
  • 何时使用:对于静态的非变异数据。
  • 用例:此处突出的示例是ResourceModel。它的默认绑定模式是OneTime(也支持OneWay,但仅限于异步)。 i18n资源只读一次,不会更新。这同样适用于ODataMetaModel

      

    此模型是只读的,因此仅支持OneTime绑定模式。没有事件被解雇!

分配绑定模式

  • 具体绑定:

    <Text text="{
      path: '...',
      mode: 'OneTime'
    }"/>
    
  • 对于模型的所有绑定对象:

    myModel.setDefaultBindingMode("OneTime");
    

    或者在ODataModel的情况下(在app descriptor中):

    "sap.ui5": {
      "models": {
        "myODataModel": {
          "dataSource": "...",
            "settings": {
            "defaultBindingMode": "TwoWay"
          }
        }
      }
    }
    
  • expression binding中,可以使用以下语法定义绑定模式:

    • 一次性:{:= ...}

    • 单向:{= ...}