按“上周”数据点击角度过滤器

时间:2015-09-21 11:00:18

标签: angularjs filter

嗨,我是角色新手并制作我的第一个模块。这篇文章非常有帮助。我想通过lastweek记录过滤我的数据。我已经在mysql查询中找到了当前日期和给定日期的日期,在按钮上单击我只是设置像DisTopic = 1这样的值,这样可以正常工作。

请您告诉我如何为day>=1 && day<=7

等范围应用过滤器

我在下面使用: -

filter:{'topic': DisTopic,'attachment':attch, 'days':day}

请帮帮我。

3 个答案:

答案 0 :(得分:1)

解决方案1:使用angular-filter模块

正如其他用户所说,您确实可以使用自定义过滤器执行此操作。但是,如果您发现自己编写了大量自定义过滤器,我建议您查看angular-filter模块。使用此模块,您可以使用pick过滤器执行所需操作:

<div ng-repeat="task in tasks | pick: 'days >= 1 && days <= 7'">{{task.name}}</div>

参见 demo fiddle

解决方案2:带参数的自定义过滤器

模板:

<div ng-repeat="task in tasks | dayFilter: 1 : 7">{{task.name}}</div>

使用Javascript:

app.filter('dayFilter', function() {
    return function(input, startDay, endDay) {
        var filterFunction = function (item) {
            return item.days >= startDay && item.days <= endDay;
        };
        return input.filter(filterFunction);
    };
});

参见 updated demo fiddle

答案 1 :(得分:0)

自定义过滤器示例,您可以根据需要进行修改。

控制器

    $scope.search = function (item) {
        if ($scope.searchUser == null || $scope.searchUser.trim() == "")
            return true;
        if (item.FirstName.toLowerCase().indexOf($scope.searchUser.toLowerCase()) != -1 || item.LastName.toLowerCase().indexOf($scope.searchUser.toLowerCase()) != -1 || item.Role.toLowerCase().indexOf($scope.searchUser.toLowerCase()) != -1) {
            return true;
        }
        return false;
    };

而不是在你的视图中调用它

 | filter:search

因此,根据您的要求,您可以在控制器中传递尽可能多的参数和修改方法。

答案 2 :(得分:0)

//Below code solve my problem.

Date.prototype.getWeek = function () {
// Create a copy of this date object  
var target = new Date(this.valueOf());

// ISO week date weeks start on monday  
// so correct the day number  
var dayNr = (this.getDay() + 6) % 7;

// ISO 8601 states that week 1 is the week  
// with the first thursday of that year.  
// Set the target date to the thursday in the target week  
target.setDate(target.getDate() - dayNr + 3);

// Store the millisecond value of the target date  
var firstThursday = target.valueOf();

// Set the target to the first thursday of the year  
// First set the target to january first  
target.setMonth(0, 1);
// Not a thursday? Correct the date to the next thursday  
if (target.getDay() !== 4) {
    target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
}

// The weeknumber is the number of weeks between the   
// first thursday of the year and the thursday in the target week  
return Math.ceil((firstThursday - target) / 604800000) - 1; // 604800000 = 7 * 24 * 3600 * 1000  

};