【问题标题】:How to filter table data in ng-repeat with date如何使用日期过滤 ng-repeat 中的表数据
【发布时间】:2016-12-20 15:52:57
【问题描述】:

我有以下

index.cshtml

<td>From:<input kendo-date-picker ng-model="date1" class="form-control input-sm" /></td>
<td>To:<input kendo-date-picker ng-model="date2" class="form-control input-sm" /></td>

         <tr dir-paginate="item in AllItems| itemsPerPage: 15 | filter : dateRangeFilter:date1:date2"> @*filter : SearchSubmitDate | filter : MarketingSearch filter: dateRangeFilter('SubmitDate', startDate, endDate)*@
            <td style="font-weight:bold;">{{item.MarketingFormattedID}}</td>
            <td  filter="{ 'SubmitDate': 'text' }">{{item.SubmitDate| mydate | date: 'MM/dd/yyyy'}}</td>
            <td>{{item.DueDate| mydate | date: 'MM/dd/yyyy'}}</td>
            <td>{{item.Description}}</td>
            <td>{{item.SubmittedBy}}</td>
            <td>{{item.MarketingStatusTypeName}}</td>
            <td>{{item.AssignedTo}}</td>
            <td><button ng-click="GetByMktId(item.MarketingID)"> Edit</button></td>
        </tr>

.js 文件中

function parseDate(input) {
    return Date.parse(input);
}

app.filter("dateRangeFilter", function () {
return function (items, from, to) {
    console.log('dateRangeFilter ' + from + ' ' + to);
    var df = parseDate(from);
    var dt = parseDate(to);
    console.log('parsed ' + df + ' ' + dt);
    var result = [];
    for (var i = 0; i < items.length; i++) {
        var date_bet = items[i].datetime;
        if (date_bet > df && dt > date_bet) {
            result.push(items[i]);
        }
    }
    return result;
    };
});

一切都是未定义的。我对 angularjs 比较陌生,并尝试了我可以在 stackoverflow 或 google 上找到的所有不同方法。不知道我错过了什么。请帮忙。谢谢。

其他信息: 这是一个非常大的控制器,所以我没有包含所有信息。

app.controller('cvManageMarketingController', function ($scope, serviceMarketing, updateMarketingItemService, marketingItemsListService,
            serviceNewMarketCode, serviceSaveMktFiles, serviceGetMktFiles, serviceDownloadMktFile, $filter){

    marketingItemsListService.getAll().then(function (value) {
        $scope.AllItems = (value);
        $scope.orderByField = 'SubmitDate';
        $scope.reverseSort = true;
        $scope.AllFiles = [];
        $scope.MarketingID = 0;
        $scope.MarketingFormattedID = "";
        $scope.Headers = "Add Marketing Item";
    });
}

然后我将 ng-controller="cvManageMarketingController" 传递给主 div。

【问题讨论】:

  • 标记和代码不完整。请至少提供与您发布的标记相关的控制器代码。 AllItems 的数据收集是什么样的?
  • 我添加了其他信息。如果我需要更多内容,请告诉我。谢谢

标签: angularjs angularjs-ng-repeat angularjs-filter kendo-datepicker


【解决方案1】:

我想建议您使用smart table 插件来填充 angular js 中的项目,它带有方便的 api 和所有需要的东西,如分页、要显示的项目等。

【讨论】:

    猜你喜欢
    • 2016-09-24
    • 2014-10-20
    • 1970-01-01
    • 2015-08-02
    • 2023-03-27
    • 1970-01-01
    • 2015-08-21
    • 2016-06-06
    • 1970-01-01
    相关资源
    最近更新 更多