Javascript ng模型:空字符串应为null
如果我对输入字段使用Javascript ng模型:空字符串应为null,javascript,angularjs,Javascript,Angularjs,如果我对输入字段使用ng model并将其清空,angular会将其设置为',而不是null,即使它以前是null 在我的例子中,这是一个问题,因为如果输入字段为空,我需要将null发送到服务器,而不是' 是否有办法将角度设置“空”输入模型设置为null?您可能需要$watch查看空值并将其设置为null: <input type="text" ng-model="test.value" /> 另一种方法是使用自定义指令并在其中应用$parsers: <input type=
ng model
并将其清空,angular会将其设置为'
,而不是null
,即使它以前是null
在我的例子中,这是一个问题,因为如果输入字段为空,我需要将null
发送到服务器,而不是'
是否有办法将角度设置“空”输入模型设置为
null
?您可能需要$watch
查看空值并将其设置为null
:
<input type="text" ng-model="test.value" />
另一种方法是使用自定义指令并在其中应用$parsers
:
<input type="text" ng-model="test.value" empty-to-null />
好的,您可以在指令中将作用域配置为隔离的,以获得更好的封装。此指令有效,但仅当输入发生更改时有效。如果视图已加载且输入未动,则在控制器中获取此值时,它将是空字符串,而不是null。你知道如何解决这个问题吗?你可以简单地把它添加到链接函数的顶部:
if(scope.value=='')scope.value=null代码>谢谢你的回答。我试过了,但没用<代码>范围
不包含值
。是否应该是某个独立的作用域?在本例中,假定上下文作用域包含一个值
属性。由于该指令只读取一个值(无赋值),因此无需创建隔离范围。
<input type="text" ng-model="test.value" empty-to-null />
myApp.directive('emptyToNull', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, elem, attrs, ctrl) {
ctrl.$parsers.push(function(viewValue) {
if(viewValue === "") {
return null;
}
return viewValue;
});
}
};
});