【问题标题】:Filtering data usig date and keyword in angular js在angularjs中使用日期和关键字过滤数据
【发布时间】:2015-10-26 05:32:03
【问题描述】:

我有一个包含数据的表,并说我正在从 array1 传递数据。在表格的顶部,我有 3 个面板和一个按钮,它们分别是 fromDate、toDate、关键字和一个搜索按钮。单击搜索按钮后,我希望根据 3 个输入过滤数据。我的想法是当我点击搜索按钮时使用 ng-click 调用一个函数。

HTML:

button type="button" class="btn btn-primary pull-right" ng-click="filter(toDate,fromDate,text)">Search</button>

Javascript:

$scope.filter = function (toDate, fromDate, text) {

    var d1 = fromDate.format('MM-DD-YYYY');


    var d2 = toDate.format('MM-DD-YYYY');

    for (var i = 0; i < arr1.length; ++i) {
        if (arr[i].match(/text/g) != null && arr1[i].dateReported >= d1 && arr1[i].dateReported <= d2) {
            newarr[i] = arr[i];
        }
    }
};

但我不知道如何打印以及何时打印新数组。有一个更好的方法吗。谢谢

【问题讨论】:

  • 我不完全理解您的问题,但根据提及,我建议为每个动态输入或输出(todate、fromdate、文本和您的数组数据)创建模型变量(或单个变量)你要将它们绑定到你的输入类型和你的 div (如果是数组数据)。你也不需要传递 ass 参数,因为你已经在你的范围内定义了模型变量。有了这个,您不必担心您的数组何时绑定回来。希望对你有帮助!!!!

标签: javascript jquery angularjs angularjs-filter


【解决方案1】:

我认为您不需要将三个参数传递给您的控制器方法。相反,您可以将这些暴露给 $scope,然后在 filter 方法中引用 $scope 变量。

以下是一个快速示例,可以帮助您走上正轨。请注意,这是在控制器中使用 controllerAs 语法。有关这方面的更多信息,请访问Here。另外,我正在使用 indexOf 函数而不是执行正则表达式搜索。

function fooController($log, model) {

   var self = this;
   self.fromDate = null;
   self.toDate = null;
   self.filterText = null;
   self.result = [];
   self.onFilter = filter;    

   // Populate our array from external source.
   var _myArray = model.populateArray();

   function filter() {      
     // May want to check and ensure that self.fromDate, self.toDate, and self.filterText 
     // are defined.  Exit gracefully or default them if not.

     // Splice array rather than initialize to '[]' so we don't lose the reference in the scope
     self.result.splice(0, self.result.length);  

     for(var i=0; i<_myArray.length; i++) {
       if (_myArray[i].indexOf(self.filterText) >= 0) && _myArray[i].dateReported >= self.fromDate && _myArray[i] <= self.toDate) {
         self.result.push(_myArray[i]);
       }
     }

     $log.info(result);
   };
};

那么你的 HTML 应该是这样的

<button type='button' class='btn btn-primary pull-right' ng-click='vm.onFilter()'>Filter Data</button>

【讨论】:

    猜你喜欢
    • 2014-01-06
    • 2017-01-15
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多