我遇到这种情况:
带一些输入文字。当我填充输入时,我可以通过按钮隐藏它们。我需要的是,当输入隐藏所有输入内容的内容时。因此,当我单击“显示”按钮时,输入必须为空。在有人问我之前我不能使用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": ""
}];
});
答案 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使用双重绑定。这意味着,如果您在控制器内更新模型,它将被反射回来。这就是为什么你可以改变模型对象,表格将显示一个空的输入字段。