当用户点击单选按钮时,我运行:
$scope.clientClick = function() {
//do stuff
}
我有一个表单,我希望在上面的方法中清除表单上的一半字段。
我做了:
$scope.clientClick = function() {
$scope.entry.first_name = '';
$scope.entry.last_name = '';
$scope.entry.email = '';
$scope.entry.tel = '';
$scope.entry.gender = '';
$scope.entry.job = '';
$scope.entry.age = '';
}
但是,是否有更简单的方法而不是再次列出每个字段?
答案 0 :(得分:0)
function initObject(obj) {
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
switch(typeof obj[i]){
case 'string':
obj[i] = '';
break;
case 'number':
obj[i] = 0;
break;
}
}
}
}
使用此功能。从来没有这样做$ scope.entry = {}或$ scope.entry.name = null,它更安全,当你的代码的某些部分需要一个类型时,你不会得到不必要的错误。将字符串设置为“”会更容易。
答案 1 :(得分:0)
我会使用$scope.entry = null
或$scope.entry = {}
。
使代码简单易读。
答案 2 :(得分:0)
['first_name', 'last_name', ...].forEach(function (f) {
$scope.entry[f] = '';
});
在JavaScript中,可以通过两种方式访问属性:
obj.prop
obj['prop']
您可以保留一个字符串列表,其中包含您要清除的属性,然后只需迭代清除每个字符串。
答案 3 :(得分:0)
我建议如果您对单选按钮有依赖性,那么视图模型应该反映它可以被清除:
$scope.entry.dependant = { first_name: '' ... }
$scope.clientClick = function() {
$scope.entry.dependant = {};
}
答案 4 :(得分:0)
我会做一些事情,比如Reset a model with angular.js:
$scope.initial = [
{
first_name : '',
last_name : '',
email : '',
tel : '',
gender : '',
job : '',
age : ''
}
];
$scope.clientClick = function() {
angular.copy($scope.initial, $scope.entry);
});