我是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 = '';
};
}])
答案 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 = "";
});
};