过滤Angular之后的独特之处

时间:2015-11-09 21:33:47

标签: angularjs filter

所以我一直试图解决这个问题,但它仍然让我感到困惑。

最终我希望能够做到以下

    object in objects | unique:'DateTime | limitTo:4'//As the year is the first 4 characters

(哦,好吧y10k:))

但是我不知道我是怎么写的,我更喜欢把它作为内联HTML代码,所以我不需要乱用依赖注入。

提前致谢!

1 个答案:

答案 0 :(得分:0)

使用此derictive:

.filter('unique', function () {
    return function (items, filterOn) {
        if (filterOn === false) {
            return items;
        }
        if ((filterOn || angular.isUndefined(filterOn)) && angular.isArray(items)) {
            var hashCheck = {}, newItems = [];
            var extractValueToCompare = function (item) {
                if (angular.isObject(item) && angular.isString(filterOn)) {
                    return item[filterOn];
                } else {
                    return item;
                }
            };
            angular.forEach(items, function (item) {
                var valueToCheck, isDuplicate = false;
                for (var i = 0; i < newItems.length; i++) {
                    if (angular.equals(extractValueToCompare(newItems[i]), extractValueToCompare(item))) {
                        isDuplicate = true;
                        break;
                    }
                }
                if (!isDuplicate) {
                    newItems.push(item);
                }
            });
            items = newItems;
        }
        return items;
    };
});