使用ng-repeat表中的按钮清除所有输入

时间:2014-05-27 13:23:21

标签: angularjs

我是AngularJS的新手,我使用了一个添加动态行的表。现在我想使用函数删除所有输入的内容,使用ng-model item.taxOne和item.taxTwo,具体取决于所选的值。

例如

选择税无:应清除所有带有ng-model item.taxOne和item.taxTwo的输入

选择1税:应清除所有具有ng-model item-taxTow的输入

选择2税收:什么都不做......

不幸的是它不起作用:我的第一种方法(参见下面的脚本)是删除item-TaxOne的所有输入。在这一点上,我收到了一个错误:

无法设置未定义

的属性'taxOne'

感谢您的提示!

选择HTML

<select ng-model="taxOption">
  <option value="tax-none" selected="selected">   
  </option><option value="1 Tax" selected="selected">
  </option><option value="2 Taxes"></option>
</select>

表格HTML

<tbody >
<tr ng:repeat="item in invoice.items">
<td ng-hide=" taxOption=='tax-none' ">
    <input ng:model="item.taxOne">
</td>
<td ng-hide="taxOption=='tax-none' || taxOption=='1 Tax' ">
    <input  ng:model="item.taxTwo">
</td>
</tbody >

SCRIPT

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

app.controller('CtrlInvoice', ['$scope', '$translate', '$modal', '$window', '$filter', '$http', '$timeout', function($scope, $translate, $modal, $window, $filter, $http, $timeout) {
$scope.addItem = function() {
    $scope.invoice.items.push({
        taxOne : '',
        taxTwo : ''
    });
};

$scope.reset = function() {
   $scope.item.taxOne = '';
};
}])

2 个答案:

答案 0 :(得分:2)

您收到错误,因为控制器中的该函数未看到item变量,该变量仅在转发器内定义。这是因为ng-repeat指令有自己的范围。 (参见Angular docs。)

如果要清除重复项的所有taxOne值,则应在控制器中循环它们 - 这意味着控制器范围内的$scope.invoice.items数组。

答案 1 :(得分:0)

这是我清除ng-repeat控制器中所有输入的最终解决方案。感谢MJV提示!

$scope.resetTaxOne = function() {
    var tItems = $scope.invoice.items;
    angular.forEach(tItems, function(item) {
        item.taxOne = "";
    });
};