1

我的休息服务向我展示了一组字段:每个字段都有一个value属性列表和一个属性列表:enabledmaxLength(如果是字符串),minLength(如果是字符串),decimals(小数位数 - 如果是浮点数)。

在 OpenUi5 我有:

  • value并且enabledInput控件链接的属性(好!!我可以将属性与模型绑定包含属性)
  • maxLength并且decimalsString类型Float类型的选项 (链接),但我无法将选项与模型绑定:-/
  • minLength我找不到属性/选项

我想用组件映射(绑定)每个属性,以便自动为我控制库,而无需编写更多代码。

4

1 回答 1

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');
        }
    }
});
于 2015-06-10T06:02:09.190 回答