Angular ng-model ng-repeat 清除所有输入
Angular ng-model ng-repeat clear all input
为什么函数 clear()
在下面的示例中不起作用?
HTML:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div class="wrapper" ng-app="app" ng-controller="AppController">
<div class="form-control" ng-repeat="n in [] | range:number">
<input type="text" ng-model="newVar" />
<span>{{newVar}}</span>
</div>
<!-- //form controll -->
<input type="range" ng-model="number" max="9" />
<label>Repeat input fields {{number}} times</label>
<button ng-click="clear()">clear</button>
</div>
</body>
</html>
控制器:
var app = angular.module('app', []);
app.controller('AppController', function($scope) {
$scope.number = 5;
$scope.newVar = 0;
$scope.clear = function() {
$scope.newVar ='';
}
});//AppController
app.filter('range', function () {
return function (input, total) {
total = parseInt(total);
for (var i = 0; i < total; i++) {
input.push(i);
}
return input;
}; //filter range
});
这是我的plnkr
当您手动更新文本框值时,它实际上会在 childScope 中设置 newVar
值(由 ng-repeat 指令创建),而不是将其绑定到 newVar尝试将值与 $parent.newVar
绑定,它会完美地工作。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div class="wrapper" ng-app="app" ng-controller="AppController">
<div class="form-control" ng-repeat="n in [] | range:number">
<input type="text" ng-model="$parent.newVar" />
<span>{{newVar}}</span>
</div>
<!-- //form controll -->
<input type="range" ng-model="number" max="9" />
<label>Repeat input fields {{number}} times</label>
<button ng-click="clear()">clear</button>
</div>
</body>
</html>
here 适合你
ng-repeat
为每个 'repeat' 创建一个子作用域,因此您可以使用 $parent
访问控制器的作用域。此外,您可以使用 array/object 来存储所有值,而不是只对视图中的所有不同行使用一个变量。您可以在 ng-repeat
:
中使用 $index
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div class="wrapper" ng-app="app" ng-controller="AppController">
<div class="form-control" ng-repeat="n in [] | range:number">
<input type="text" ng-model="$parent.newVar[$index]" />
<span>{{newVar[$index]}}</span>
</div>
<!-- //form controll -->
<input type="range" ng-model="number" max="9" />
<label>Repeat input fields {{number}} times</label>
<button ng-click="clear()">clear</button>
</div>
</body>
</html>
这种方式 clear()
清除所有值,因为它将整个对象设置为空字符串。
这就是为什么我还要将 clear 函数更改为如下内容:
$scope.clear = function() {
$scope.newVar = {};
}
为什么函数 clear()
在下面的示例中不起作用?
HTML:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div class="wrapper" ng-app="app" ng-controller="AppController">
<div class="form-control" ng-repeat="n in [] | range:number">
<input type="text" ng-model="newVar" />
<span>{{newVar}}</span>
</div>
<!-- //form controll -->
<input type="range" ng-model="number" max="9" />
<label>Repeat input fields {{number}} times</label>
<button ng-click="clear()">clear</button>
</div>
</body>
</html>
控制器:
var app = angular.module('app', []);
app.controller('AppController', function($scope) {
$scope.number = 5;
$scope.newVar = 0;
$scope.clear = function() {
$scope.newVar ='';
}
});//AppController
app.filter('range', function () {
return function (input, total) {
total = parseInt(total);
for (var i = 0; i < total; i++) {
input.push(i);
}
return input;
}; //filter range
});
这是我的plnkr
当您手动更新文本框值时,它实际上会在 childScope 中设置 newVar
值(由 ng-repeat 指令创建),而不是将其绑定到 newVar尝试将值与 $parent.newVar
绑定,它会完美地工作。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div class="wrapper" ng-app="app" ng-controller="AppController">
<div class="form-control" ng-repeat="n in [] | range:number">
<input type="text" ng-model="$parent.newVar" />
<span>{{newVar}}</span>
</div>
<!-- //form controll -->
<input type="range" ng-model="number" max="9" />
<label>Repeat input fields {{number}} times</label>
<button ng-click="clear()">clear</button>
</div>
</body>
</html>
here 适合你
ng-repeat
为每个 'repeat' 创建一个子作用域,因此您可以使用 $parent
访问控制器的作用域。此外,您可以使用 array/object 来存储所有值,而不是只对视图中的所有不同行使用一个变量。您可以在 ng-repeat
:
$index
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div class="wrapper" ng-app="app" ng-controller="AppController">
<div class="form-control" ng-repeat="n in [] | range:number">
<input type="text" ng-model="$parent.newVar[$index]" />
<span>{{newVar[$index]}}</span>
</div>
<!-- //form controll -->
<input type="range" ng-model="number" max="9" />
<label>Repeat input fields {{number}} times</label>
<button ng-click="clear()">clear</button>
</div>
</body>
</html>
这种方式 clear()
清除所有值,因为它将整个对象设置为空字符串。
这就是为什么我还要将 clear 函数更改为如下内容:
$scope.clear = function() {
$scope.newVar = {};
}