用角度清除字段?

时间:2013-11-26 15:05:47

标签: angularjs

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

$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 = '';
}

但是,是否有更简单的方法而不是再次列出每个字段?

5 个答案:

答案 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 : ''
  }            
];

Demo

$scope.clientClick = function() {
  angular.copy($scope.initial, $scope.entry);
});