当ng-show为假AngularJS时,清除输入ng模型

时间:2016-05-25 11:21:51

标签: javascript angularjs

嗨,我有一个小问题。 我有一个输入栏,有时需要以表格形式显示,有时不需要。 我担心如果有人放数据然后隐藏它并按发送,数据将被发送。所以我想在每次隐藏时重置输入。

ng-change不是一个好主意,因为它不会让我写任何东西。

<div class="form-group" ng-show="isItOne=='1' || isItTwo=='2'">
  <label class="col-md-1">someName</label>
  <div class="col-md-4">
    <input class="form-control" type="text" name="someOtherName" ng-model="nameModel" ng-change="clearWhenChanged()">
  </div>
</div>

这是函数

$scope.clearWhenChanged = function() {
  $scope.nameModel = "";
};

3 个答案:

答案 0 :(得分:1)

取出show条件并使用它来控制可见性和模型值。

$scope.showHideField = function(){
    if(isItOne=='1' || isItTwo=='2'){
        return true;
    }
    $scope.nameModel= "";
}

在你的div中调用它: <div class="form-group" ng-show="showHideField()">

这也提供了传递标记的灵活性,您可以根据该标记决定是否清除字段的值.. :)

答案 1 :(得分:0)

您可以在设置isItOne变量的位置调用函数。在该功能中,您可以将变量设置为12 清除模型值。

<强> HTML

<div class="form-group" ng-show="show()">
    <label class="col-md-1">someName</label>
    <div class="col-md-4">
        <input class="form-control" type="text" name="someOtherName" ng-model="nameModel" ng-change="clearWhenChanged()">
    </div>
</div>

<强>控制器

$scope.show = function() {
    if ($scope.isItOne == '1' || $scope.isItOne == '2');
        return true;
    $scope.nameModel = '';
}

说完所有这些可能是一个更好的选择,只是简单地取消模型在提交时的价值,以防你不希望它被发送。

答案 2 :(得分:-1)

使用标记属性ng-if="your condition",这将仅在条件为真时呈现标记。否则它将从DOM中删除整个输入。