这是我的代码:
<div ng-app="myApp" ng-controller="myCtrl">
Name: <input ng-model="myInput.name" />
age: <input ng-model="myInput.age" />
<pre>
{{myInput | json}}
</pre>
</div>
<script type="text/javascript">
angular.module('myApp', [])
.controller('myCtrl', function($scope) {
$scope.myInput = {};
});
</script>
默认情况下,空字符串未设置为ng-model。
默认情况下,如何将所有myInput值设置为&#34;&#34; ?
以下是plnkr
更新
假设myInput字段超过100个。我必须手动将其设置为&#39; &#39; ?
更新2:
Pankaj Parkar指令运作良好。但当然,它将所有模型值设置为&#39; &#39; 。如果模型为空,如何将模型设置为空字符串?我检查了attrs.value == undefined但没有任何帮助。
答案 0 :(得分:3)
有两种方法可以做到。
在控制器中:
.controller('myCtrl', function($scope) {
$scope.myINput = {
name: '',
age: ''
};
});
或在视图中
Name: <input ng-model="myInput.name" ng-init="myInput.name=''" />
age: <input ng-model="myInput.age" ng-init="myInput.age=''" />
答案 1 :(得分:2)
您可以使用object literal初始化变量myInput
。这将确保在加载时将它们设置为空字符串
$scope.myInput = {
name: '',
age: ''
};
编辑:如果要初始化$scope.myInput
对象中的所有值,可以使用以下JS代码:
Object.keys($scope.myInput).forEach(function(key, index) {
$scope.myInput[key] = '';
});
或者您可以使用某些库(例如underscore
或lodash
)来迭代myInput
对象中的值。我假设myInput
对象中的所有值的数据类型为String
。如果存在其他数据类型,例如Array
,则可以在 forEach()块中插入该逻辑,并相应地初始化值。
答案 2 :(得分:2)
你可以有一个指令,负责将默认值设置为''
<强>标记强>
input empty-input ng-model="myInput.name" /> <br> <br>
age: <input empty-input ng-model="myInput.age" />
<强>指令强>
.directive('emptyInput', function($parse) {
return {
require: '?ngModel',
link: function(scope, element, attrs, ngModel) {
//ngModel should be there & it should be of type text
if (angular.isObject(ngModel) &&
(!attrs.type || attrs.type === 'text')) {
var model = $parse(attrs.ngModel);
model.assign(scope, '');
}
}
}
});
您可以循环访问对象并将每个属性设置为''
。但这有限制,对于某些属性,您不希望将值更改为''
。那么指令方式将更可取,而不是在循环中添加条件。
仅当模型为空时将模型设置为空字符串
.directive('emptyInput', function ($parse) {
return {
require: '?ngModel',
link: function (scope, element, attrs, ngModel) {
var ngModelGet = $parse(attrs.ngModel);
scope.$watch(attrs.ngModel, function () {
if (ngModelGet(scope) == undefined && angular.isObject(ngModel) && (!attrs.type || attrs.type === 'text')) {
var model = $parse(attrs.ngModel);
model.assign(scope, '');
}
});
}
}
});
答案 3 :(得分:0)
您可以使用以下代码获取密钥:
var attributes = Object.keys(myInput);
for (i = 0; i < attributes.length; i++){
myInput[attributes[i]] = '';
}
然后遍历属性并将它们分配给空值,然后将它们重新分配给myJSONObject。 我假设你的对象是一个JSON对象。