我已经阅读了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?
答案 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非常有用的答案,到目前为止,在我所做的测试中,它运行良好。