找出保留空值的列的类型

时间:2018-06-22 23:15:25

标签: javascript angularjs

我已经阅读了why is typeof null "object"?这个问题的答案,并且正在尝试找出解决特定问题的方法。

我正在开发一个Web应用程序,其中前端使用angularJs,服务器代码使用ASP.NET MVC。我们将模型传递到前端,然后再更新值。我正在尝试寻找以下解决方案:

当我们使用Web界面中的Backspace键从输入type =“ number”中删除数字时,输入控件的值将为null。在我们的模型中,数字值被定义为不可为空(在我们的数据库中,字符串也应转换为空值而不是null)。

我正在尝试找到一种方法,可以将数字键设置为0,将字符串键设置为空字符串。

我添加了一个名为verifyInput的新方法,这是代码的开头:

/**
     * @returns true or false 
     * */
    Model.prototype.verifyInput = function () {
        for (let i = 0; i < this.keys.length; i++) {
            const key = this.keys[i];

            if (this[key] === null) {
                this[key] = 
            }
        }
    }

我不确定如何编写上述方法。我已经发现我不能使用typeof或lodash方法检查键的类型,因为它是返回对象。我需要将数字设置为0,将字符串设置为空字符串,但不设置日期时间值。您是否看到我的问题,并且有解决方案的想法?也许我应该在这里使用try / catch?

1 个答案:

答案 0 :(得分:0)

我删除这些键的想法似乎可行。我得到了正确的行为(例如,在这种情况下,服务器的值自动为0)。

我添加了以下代码:

Model.prototype.verifyInput = function () {

        let i = this.keys.length;
        while (i--) {
            const key = this.keys[i];

            if (this[key] === null) {
                this.keys.splice(i, 1); // Let's remove the null element from the model
            }            
        }

        return true;
    }

基于另一个我发现的Looping through array and removing items, without breaking for loop非常有用的答案,到目前为止,在我所做的测试中,它运行良好。