如果它的 $pristine 如何隐藏输入元素的值
how to hide value of input element if its $pristine
我已将 ng-model 附加到 ,但我想显示一个默认占位符值(如果未被触及)($pristine
)。有什么好方法吗?我不能在初始时简单地将我的 ng-model 值设置为 null。
这是我的笨蛋:
http://plnkr.co/edit/0kzKrwKTbJzsMGG8D1gQ?p=preview
<body ng-controller="inputController">
<input type="number" id="pricefield" min="0" name="price" placeholder="Price" ng-model="test.value" required/>
</body>
angular.module('plunker', []);
function inputController($scope) {
$scope.test = {value: 0};
}
您可以使用 ng-attr
指令动态设置占位符值,检查表单元素是否为 pristine
您需要将此字段放在 form
中 & 然后您可以轻松检查该表单元素的 $pristine
属性,例如 myForm.price.$pristine
.
标记
<form name="myForm">
<input type="number" id="pricefield" min="0" name="price" ng-model="test.value"
ng-attr-placeholder="{{myForm.price.$pristine ? 'Some Value': 'Default Value'}}" required/>
</form>
更新
我建议设置一个指令,在初始加载时更改隐藏 $viewValue
并显示占位符。指令将在 ngModelControlller
上使用 $formatters
控制显示值
标记
<input type="number" custom-dir id="pricefield" min="0" name="price"
ng-attr-placeholder="{{myForm.price.$pristine ? 'Initial Placeholder': 'After change Placeholder'}}"
ng-model="test.value" required/>
指令
app.directive('hideInitialLoad', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ngModel) {
var initalHide = true;
//format text going to user (model to view)
ngModel.$formatters.push(function(value) {
console.log(attr.min > value)
if (initalHide){
initalHide = false;
return undefined;
}
return value;
});
}
};
});
我已将 ng-model 附加到 ,但我想显示一个默认占位符值(如果未被触及)($pristine
)。有什么好方法吗?我不能在初始时简单地将我的 ng-model 值设置为 null。
这是我的笨蛋:
http://plnkr.co/edit/0kzKrwKTbJzsMGG8D1gQ?p=preview
<body ng-controller="inputController">
<input type="number" id="pricefield" min="0" name="price" placeholder="Price" ng-model="test.value" required/>
</body>
angular.module('plunker', []);
function inputController($scope) {
$scope.test = {value: 0};
}
您可以使用 ng-attr
指令动态设置占位符值,检查表单元素是否为 pristine
您需要将此字段放在 form
中 & 然后您可以轻松检查该表单元素的 $pristine
属性,例如 myForm.price.$pristine
.
标记
<form name="myForm">
<input type="number" id="pricefield" min="0" name="price" ng-model="test.value"
ng-attr-placeholder="{{myForm.price.$pristine ? 'Some Value': 'Default Value'}}" required/>
</form>
更新
我建议设置一个指令,在初始加载时更改隐藏 $viewValue
并显示占位符。指令将在 ngModelControlller
$formatters
控制显示值
标记
<input type="number" custom-dir id="pricefield" min="0" name="price"
ng-attr-placeholder="{{myForm.price.$pristine ? 'Initial Placeholder': 'After change Placeholder'}}"
ng-model="test.value" required/>
指令
app.directive('hideInitialLoad', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ngModel) {
var initalHide = true;
//format text going to user (model to view)
ngModel.$formatters.push(function(value) {
console.log(attr.min > value)
if (initalHide){
initalHide = false;
return undefined;
}
return value;
});
}
};
});