OpenUI5 绑定 属性 与功能,而不是直接访问

OpenUI5 binding property with a function, instead of direct access

我想将一个 属性(在本例中为 flag_baz)从 JSONModel 绑定到一个复选框。 问题是 json 模型看起来像这样。

{
  foo: "Foo", 
  bar:"Bar", 
  flag_baz : "X"
}

在这种情况下,X 表示 "true",空字符串表示 "false"

我想做的是评估一个从模型绑定到复选框的函数(这会将 "X"/"" 转换为 true/false)并在从模型的复选框(将从 true/false 转换回 "X"/"")。

我想要这样的东西:

var checkBox = new Checkbox();
checkBox.bindProperty("checked", "flag_baz", funcFromStringToBool, funcFromBoolToString);

我知道 funcFromStringToBool 被称为格式化程序。

如何添加 funcFromBoolToString 函数?

希望这是有道理的。

提前致谢。

好吧,以防万一,我自己找到了答案。

所有绑定都可以使用这样的类型

checkBox.bindProperty("checked", { 
      path : "flag_baz", 
      type : new BooleanStringType()
});

BooleanStringType class 看起来像这样:

sap.ui.model.SimpleType.extend("BooleanStringType", {
    //called when going from model to ui
    formatValue : function(flag_baz){
        return flag_baz === "X";
    },
    //called when going from ui back to the model
    parseValue : function(flag_baz){
        return flag_baz ? "X" : "";
    },
    validateValue : function(flag_baz){
       //some validation if needed
    }
});