过滤器不使用动态输入和ng-repeat

时间:2015-04-19 05:26:20

标签: angularjs angularjs-directive angularjs-ng-repeat

我正在尝试根据输入文本框过滤我的转发器中的记录,但它正在意外地工作而不是过滤正确的记录。

我的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即可。

1 个答案:

答案 0 :(得分:2)

您的输入没有ng-model="txtTest"。因此,在金额中输入的文字未保存在txtTest中,因此txtTest未定义。

编辑:

另一个问题是你使用字符串来表示数字。见updated plunkr。使用类型编号的输入,并用数字替换对象中的字符串使一切正常。