如何根据动态最小日期验证sap.m.DatePicker选择?

时间:2014-12-17 15:22:59

标签: validation sapui5

验证sap.m.DatePicker输入的常规方法如下所示:

new sap.m.DatePicker({
    value : {
        path : "someModel>/SomeDate",
        type :  new sap.ui.model.type.Date({}, {
            minimum : new Date()
        })
    }
})

我有问题,"最小"日期将取决于不同的其他参数。 一个类型的绑定似乎不起作用(或者我做错了什么?)。

我很乐意拥有这样的功能:

new sap.m.DatePicker({
    value : {
        path : "someModel>/SomeDate",
        type :  new sap.ui.model.type.Date({}, {
            minimum : "{someModel>/MinimumDate}"
        })
    }
})

任何人都知道如何解决这个问题? 我更愿意避免使用id来获取控制器中的控件。

1 个答案:

答案 0 :(得分:1)

我构建了以下解决方案。也许有更好的方法?

数据类型的定义:

jQuery.sap.declare("my.CallbackDateType");

sap.ui.model.type.Date.extend("my.CallbackDateType", {
    constructor : function () {
        sap.ui.model.type.Date.apply(this, arguments);
        this.sName = "CallbackDateType";
    },

    validateValue : function(oValue) {
        var that = this;
        if (that.oConstraints.callback!==undefined) {
            that.oConstraints.callback[0].call(that.oConstraints.callback[1], that);
        }
        return sap.ui.model.type.Date.prototype.validateValue.call(this, oValue);
    }
});

像这样使用:

new sap.m.DatePicker({
    value : {
        path : "model>/Date",
        type : new my.CallbackDateType({}, {
            minimum : new Date(),
            callback : [oController.getMinimumDate, oController]
        })
    }
})