我有这个输入:
<input ng-model="data.value" type="number" placeholder="0" value="0">
当我更改输入(例如1)然后将其删除时data.value
保持null。我希望当我删除输入时data.value
将0保持为默认值。
我看到了这个解决方案: Angular ng-model: empty strings should be null
这个解决方案对我有用,但我想知道是否有其他没有$watch
或ng-change
功能的解决方案。
提前致谢!
答案 0 :(得分:2)
这个解决方案对我有用,但我想知道是否有其他解决方案没有$ watch
您找到的link,也有使用$watch
如果您想使用ng-change
Jus试试这个
<input ng-model="data.value" type="number" ng-change="defaultValue()"
placeholder="0" value="0">
// controller
$scope.defaultValue=function()
{
if($scope.data.value==null || $scope.data.value==='')
{
$scope.data.value=0;
}
}
Directive
是最好的方式之一 答案 1 :(得分:2)
如果我有其他输入,并且对于每个输入我想要其他默认值,我需要有很多指令
您可以在使用HTML指令时提供指令的defaultValue
attr。像这样:
.directive('emptyToDefault', function () {
return {
restrict: 'A',
require: 'ngModel',
scope: {
defaultValue: '='
},
link: function (scope, elem, attrs, ctrl) {
ctrl.$parsers.push(function(viewValue) {
if(viewValue === null) {
return scope.defaultValue || 0;
}
return viewValue;
});
}
};
});
现在,您可以轻松地从外部传递不同的默认值,并在清空字符串时设置它。
HTML就像,
<input ng-model="data.value" type="number" placeholder="0" value="0"
empty-to-default default-value="5">
working plunker(打开控制台,注意它如何设置默认值5
,因为字符串已清空且传递的值为5
)