在SAPUI5的输入控件中绑定约束

时间:2015-06-09 13:19:16

标签: data-binding sapui5 sap-fiori

我的休息服务向我公开了一组字段:每个字段都有一个value和一个属性列表:enabledmaxLength(如果是字符串),{{1} (如果是字符串),minLength(十进制数字 - 如果是浮点数)。

在OpenUi5中,我有:

  • decimalsvalueenabled控件Link的属性(好!!我可以使用模型绑定属性包含属性)
  • InputmaxLengthString typeFloat type Link )的选项,但我无法将选项绑定到型号: - /
  • decimals我找不到属性/选项

我想用组件映射(绑定)每个属性,以便在不编写更多代码的情况下自动为我控制库。

1 个答案:

答案 0 :(得分:1)

maxLength控件有一个名为Input的属性。

所以我看到的唯一问题是绑定minLength和小数,需要付出一点点努力。

解决方案

示例代码结构:

jQuery.sap.require("sap.m.Input");
jQuery.sap.declare("sap.m.ComplexInput");

sap.m.Input.extend("sap.m.ComplexInput", {
    metadata: {
        properties: {
            minLength: {
                type: "int"
            },
            decimals: {
                type: "int"
            },
            events: {
                //define your own events like checkMinLength,checkDecimals 
            }
        },
        onInit: function () {
            //on init do something
        },
        onAfterRendering: function () {
            //called after instance has been rendered (it's in the DOM)
        },
        _somePrivateMethod: function () {
            /*do someting...*/
        },

        somePublicMethod: function () {
            /*do someting...*/
        },
    }
});

sap.m.ComplexInput.prototype.exit = function () {
        /* release resources that are not released by the SAPUI5 framework */
        //do something
};
  • 添加CustomData并在任何地方使用。 然后,您可以在验证过程中或在liveChange上访问自定义数据。

将其他属性绑定到customData

的值
var input = new sap.m.Input({
    value: '{value}',
    enabled: '{enabled}',
    maxLength: '{maxLength}',
    customData: [
        new sap.ui.core.CustomData({
        key: 'minLength',
        value: '{minLength}'
        }),
        new sap.ui.core.CustomData({
            key: 'decimals ',
            value: '{decimals}'
        })
    ],
    change: function(oEvent) {
        var src = oEvent.getSource();
        var minLen = src.getCustomData()[0].getValue();
        var decimals = src.getCustomData()[1].getValue();
        if (src.getValue() && src.getValue().length > minLen) {
            src.setValueState('Success');
        } else {
            src.setValueState('Error');
        }
    }
});