我正在尝试根据输入文本框过滤我的转发器中的记录,但它正在意外地工作而不是过滤正确的记录。
我的HTML代码:
<input ng-model="txtTest" type="text" class="form-control" id="txtTest"></input>
<table>
<tr ng-repeat="SampleData in SampleInfo|MaxAmountFilter:txtTest" ng-form="SampleForm">
<td>
<div>
<input type="text" name="DateOfLoss" ng-Model="SampleData.DateOfLoss" </input>
</div>
</td>
<td>
<div>
<input type="text" name="LossDesc" ng-model="SampleData.LossDesc"> </input>
</div>
</td>
</tr>
</table>
我的指示:
AngularApp.filter('MaxAmountFilter', function () {
return function(AmountArray, AmountEntered ) {
var filteredAmount = [];
angular.forEach(AmountArray, function (amt) {
if (AmountEntered >= amt.LossAmount) {
filteredAmount.push(amt);
}
});
return filteredAmount;
};
});
我的范围数据
$scope.SampleInfo = [
{ "DateOfLoss": "01/01/2014", "LossAmount": "100", "LossDesc": "sasa"},
{ "DateOfLoss": "01/01/2015", "LossAmount": "500", "LossDesc": "ssss" },
{ "DateOfLoss": "01/01/2011", "LossAmount": "102", "LossDesc": "ddd" },
{ "DateOfLoss": "01/01/2012", "LossAmount": "700", "LossDesc": "hhhh"},
{ "DateOfLoss": "01/01/2010", "LossAmount": "250", "LossDesc": "dsdsd"}
];
这适用于静态值,即当我不根据文本框的输入值进行过滤时。代码有什么问题。请提出建议!
编辑: Plnkr here
键入101,102然后它可以工作但是当你在文本框中键入10000它不起作用。现在从过滤器中删除MaxAmountFilter:txtTest
,只需添加MaxAmountFilter:10000
即可。
答案 0 :(得分:2)
您的输入没有ng-model="txtTest"
。因此,在金额中输入的文字未保存在txtTest
中,因此txtTest
未定义。
编辑:
另一个问题是你使用字符串来表示数字。见updated plunkr。使用类型编号的输入,并用数字替换对象中的字符串使一切正常。