Angularjs 用角扫除田野?

Angularjs 用角扫除田野?,angularjs,Angularjs,当用户单击单选按钮时,我运行: $scope.clientClick = function() { //do stuff } 我有一个表单,我想用上面的方法清除表单上的一半字段 我已经做了: $scope.clientClick = function() { $scope.entry.first_name = ''; $scope.entry.last_name = ''; $scope.entry.email = ''; $scope.entry

当用户单击单选按钮时,我运行:

$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 = '';
}
但是有没有比再次列出每个字段更简单的方法呢

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,这样更安全,而且当代码的某些部分需要类型时,不会出现不必要的错误。只需将字符串设置为更简单。

我将使用$scope.entry=null或$scope.entry={}

使代码简单易读。

简短回答 长话短说 在JavaScript中,可以通过两种方式访问属性:

obj.prop
obj['prop']

您可以保留一个包含要清除的属性的字符串列表,然后只需依次清除每个属性就可以对其进行迭代。

我建议,如果您对单选按钮有依赖关系,则视图模型应该反映出可以清除它:

$scope.entry.dependant = { first_name: '' ... }

$scope.clientClick = function() {

    $scope.entry.dependant = {};
}

我会做一些事情,比如:


你不能只清除$scope.entry吗?@smk不,它清除了整个表单,我只想清除其中的一部分。所以我知道没有办法。这就产生了错误:TypeError:Object没有方法“推送”修复了错误,但这仍然不起作用,它会删除整个表单。它不应该检查演示。你的演示没有反映问题。它会清除整个数据集,例如在您的演示中,单击“重置”时姓氏将保留在那里。
$scope.entry.dependant = { first_name: '' ... }

$scope.clientClick = function() {

    $scope.entry.dependant = {};
}
$scope.initial = [
  {
    first_name : '',
    last_name : '',
    email : '',
    tel : '',
    gender : '',
    job : '',
    age : ''
  }            
];
$scope.clientClick = function() {
  angular.copy($scope.initial, $scope.entry);
});