首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何向输入字段添加验证?绑定JSON模型不工作

如何向输入字段添加验证?绑定JSON模型不工作
EN

Stack Overflow用户
提问于 2020-01-20 13:45:39
回答 2查看 622关注 0票数 1

我试着学习SAPUI5与样品兄弟会演示工具包输入检查。我收到一条错误消息:oInput.getBinding不是函数

我有一个简单的输入字段xml:

代码语言:javascript
运行
复制
<Label text="Name" required="false" width="60%" visible="true"/>
<Input  id="nameInput" type="Text" enabled="true" visible="true" valueHelpOnly="false" required="true" width="60%" valueStateText="Name must not be empty." maxLength="0" value="{previewModel>/name}" change= "onChange"/>

我的控制器:

代码语言:javascript
运行
复制
    _validateInput: function(oInput) {
        var oView = this.getView().byId("nameInput");
        oView.setModel(this.getView().getModel("previewModel"));
        var oBinding = oInput.getBinding("value");
        var sValueState = "None";
        var bValidationError = false;

        try {
            oBinding.getType().validateValue(oInput.getValue());
        } catch (oException) {
            sValueState = "Error";
            bValidationError = true;
        }

        oInput.setValueState(sValueState);

        return bValidationError;
    },

    /**
     * Event handler for the continue button
     */
    onContinue : function () {
        // collect input controls
        var that = this;
        var oView = this.getView();
        var aInputs =oView.byId("nameInput");
        var bValidationError = false;

        // check that inputs are not empty
        // this does not happen during data binding as this is only triggered by changes
        jQuery.each(aInputs, function (i, oInput) {
            bValidationError = that._validateInput(oInput) || bValidationError;
        });

        // output result
        if (!bValidationError) {
            MessageToast.show("The input is validated. You could now continue to the next screen");
        } else {
            MessageBox.alert("A validation error has occured. Complete your input first");
        }
    },

    // onChange update valueState of input
    onChange: function(oEvent) {
        var oInput = oEvent.getSource();
        this._validateInput(oInput);
    },

有人能给我解释一下我怎么能设定模型吗?

EN

Stack Overflow用户

发布于 2020-01-20 15:29:34

通常,在加载视图之后,而不是在值被更改时,我们会设置模型。例如,如果您想设置一个名为“JSONModel”的previewModel,您可以按照下面提到的那样做。

注意,在初始化控制器时会调用onInit。如果按如下方式正确绑定模型,那么oEvent.getSource().getBinding(" value ")将返回预期值。

代码语言:javascript
运行
复制
onInit: function(){
                var oView = this.getView().byId("nameInput");
                oView.setModel(new sap.ui.model.json.JSONModel({
                name : "HELLO"
                }), "previewModel");
            },


onChange: function(oEvent) {

                var oInput = oEvent.getSource();
                this._validateInput(oInput);
            },

...

此外,为了验证输入文本,可以执行以下操作:

代码语言:javascript
运行
复制
    _validateInput: function(oInput) {
        var oBinding = oInput.getBinding("value");
        var sValueState = "None";
        var sValueStateText = "";
        var bValidationError = false;
        if(oBinding.getValue().length === 0){
            sValueState = "Error";
            sValueStateText = "Custom Error"
        }


        oInput.setValueState(sValueState);
        if(sValueState === "Error"){
            oInput.setValueStateText(sValueStateText);
        }

        return bValidationError;
    },

请注意,上面的代码并不是高质量和可生产的,因为这是对这个帖子的快速响应:)

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59824627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档