Angularjs清除输入文本字段

时间:2015-06-22 13:31:52

标签: javascript jquery html angularjs input

我遇到这种情况:

http://jsfiddle.net/f8erG/48/

带一些输入文字。当我填充输入时,我可以通过按钮隐藏它们。我需要的是,当输入隐藏所有输入内容的内容时。因此,当我单击“显示”按钮时,输入必须为空。在有人问我之前我不能使用ngIf。

这是代码:

<div ng-controller="myCtrl">
    <button ng-click="hideStuff()">Hide!</button>
    <button ng-click="showStuff()">Show!</button>
    <div ng-repeat="item in inputFileds">
        <input placeholder="{{item.label}}" class="default" ng-hide="hidden" ng-class="{'fade': startFade, 'show': !startFade}" type="text" ng-model="item.value" />
    </div>
</div>

和javascritp

var myApp = angular.module('myApp', []);

myApp.controller("myCtrl", function($scope, $timeout) {
    $scope.hideStuff = function() {
        $scope.startFade = true;
        $timeout(function() {
            $scope.hidden = true;
        }, 700);

    };

    $scope.showStuff = function() {
        $scope.startFade = false;
        $timeout(function() {
            $scope.hidden = false;
        }, 700);

    };


    $scope.inputFileds = [{
        "label": "input1",
        "value": ""
    }, {
        "label": "input2",
        "value": ""
    }, {
        "label": "input3",
        "value": ""
    }, {
        "label": "input4",
        "value": ""
    }];
});

3 个答案:

答案 0 :(得分:5)

使用正确的设计可以避免此类问题!

为什么要将配置数据(标签)放入模型中?将它们分成2个对象,因为标签是静态的,但输入字段值不是。然后你可以很简单地重置模态。

$scope.model = {};

就是这样 - 不需要重置每一个字段!

答案 1 :(得分:0)

尝试重新初始化输入字段: - &gt;的 http://jsfiddle.net/maralik/f8erG/56/

{
    public partial class Popup : Form
    {
        public Popup(DataGridViewRow rowToEdit)
        {
            InitializeComponent();

            txtEditProdName.Text = rowToEdit.Cells[0].Value.ToString();

            string quantityToEdit = rowToEdit.Cells[1].Value.ToString();
            decimal iQuantityToEdit = Convert.ToDecimal(quantityToEdit);
            upDownEditQuantity.Value = iQuantityToEdit;            

            string latestPriceToEdit = rowToEdit.Cells[2].Value.ToString();
            txtEditLatPrice.Text = latestPriceToEdit;            
        }

        public string ProdName { get { return txtEditProdName.Text; } }

        public decimal QuantityE { get { return upDownEditQuantity.Value; } }

        public decimal LatPrice { get { return Convert.ToDecimal(txtEditLatPrice.Text); } }
    }

}

答案 2 :(得分:0)

我添加了

for(var i = 0; i < $scope.inputFileds.length; ++i) {
        $scope.inputFileds[i].value = "";
    }

在你的隐藏功能中。

重要的是要理解,在这种情况下,angular使用双重绑定。这意味着,如果您在控制器内更新模型,它将被反射回来。这就是为什么你可以改变模型对象,表格将显示一个空的输入字段。