带有函数的OpenUI5绑定属性,而不是直接访问

时间:2015-05-19 10:32:41

标签: javascript sapui5 2-way-object-databinding

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

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

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

我想要做的是评估从模型到复选框的绑定功能(可以翻译" X" /""到真/假)并评估其他一些从复选框绑定到模型时的功能(从真/假转换回" X" /"")。

我想有这样的事情:

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

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

我如何添加funcFromBoolToString函数?

希望这是有道理的。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果有些关心,我自己就找到了答案。

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

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

BooleanStringType类看起来像这样:

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
    }
});