Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng模型:空字符串应为null_Javascript_Angularjs - Fatal编程技术网

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;
            });
        }
    };
});