我正尝试根据输入文本框过滤我的转发器中的记录,但它工作异常,没有过滤正确的记录。
我的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
这将起作用。
最佳答案
您的输入没有 ng-model="txtTest"
。所以金额中输入的文本没有保存在txtTest
中,因此txtTest
是未定义的。
编辑:
另一个问题是您使用字符串来表示数字。看这个updated plunkr .使用数字类型的输入,并用数字替换对象中的字符串,一切都会顺利进行。
关于angularjs - 过滤器不适用于动态输入和 ng-repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29726163/