我的表格有问题.我正在提交表单,并且一些字段不必填写,当数据发送到一个宁静的API时,我看到angular不会拾取空的,从未触及,从未改变的输入字段.
但在服务器端,预计该领域将存在.我如何获得角度来发送这些字段?
我有两个输入(data.Record.one,data.Record.two),当我填写一个并提交表格时,我最终得到这个:
{
"Record": {
"one": "test"
}
}
我想这是因为角度不会“看到”未被触及的空场.
但我希望如此:
{
"Record": {
"one": "test","two": ""
}
}
这是我尝试的演示:http://plnkr.co/edit/Ky0PQ9U5o1V7IyU9QgkK
我很清楚我可以使用空的骨架对象初始化表单,但我真的不想那样做.如果我需要这样做,那只是额外的代码,如果另一个开发人员在表单中添加一个字段但是忘记/不知道JS代码中的骨架,那么作为奖励只会引入潜在失败的区域.
最佳答案
Angular默认将空字段视为空/ null.您可以通过在输入字段中添加ng-trim =“false”来禁用此功能.
原文链接:https://www.f2er.com/html/426062.htmlhttps://docs.angularjs.org/api/ng/input/input%5Btext%5D
编辑:我现在看到你想要的. Angular会很好地照顾您的模型(数据).仅仅因为您将输入字段绑定到sub,sub属性不会使用空字符串初始化该属性.输入字段不包含空字符串 – 它们包含null,这是您首先放入它们(通过将它们绑定到未初始化的属性).
您需要的功能是角度来初始化您的数据.记录您需要的属性.您可以为该名为initialize-property的类创建一个自定义指令,该指令将其模型设置为空字符串.
编辑:我创建了指令,但由于一些跨域问题,plunker不允许我访问.您应该能够在自己的工作中使用它
myApp.directive('initializeProperty',function() {
return {
restrict: 'A',link: function (scope,element,attr) {
element.val('');
}
};
});
然后在输入字段中使用:
One