簡體   English   中英

AngularJs中的自定義排序

[英]Custom Sorting in AngularJs

我有像JSON字段

    {"facebook":"aravind@facebook.com",
            "homeAddress":"26, New Street, Blr",
            "officeAddress":"31, Old Office Street, Blr",
            "city":"Blr",
name:"aravind"
    },
    {"facebook":"ashok@facebook.com",
            "homeAddress":"26, New Street, che",
            "officeAddress":"31, Old Office Street, che",
            "city":"che",
name:"ashok"
    }

在Angular js中,我默認按名稱對字段進行排序,我有一個文本框和一個按鈕

<input type="text" class="form-control" ng-model="search.location" />
          <div class="search" ng-click="locationSorting()"></div>

當我單擊按鈕后,在文本框中輸入位置(例如:blr)。 該列表按位置排序。

目前,我已經按位置整理了過濾器。 但是我不想過濾。 我想對列表進行排序

 var locationFilterHome = {homeAddress: location};
        filterData = $filter('filter')(data, locationFilterOffice)

我正在使用上面的代碼進行過濾。 如何根據位置進行排序

據我了解,您想問一下如何按控制器中的位置對數據進行排序。 一種方法是使用“ orderBy”過濾器。 您可以像使用“過濾器”過濾器一樣使用它: filterData=$filter('orderBy')(data,'location');

請查看此插件以了解我要說的示例: http : //plnkr.co/edit/BU4DaxlBSNcmRkXG6krc?p=preview

angular.module('app',[])
  .controller('mainCtrl',function($filter){
var data=[{"facebook":"aravind@facebook.com",
                "homeAddress":"26, New Street, Blr",
                "officeAddress":"31, Old Office Street, Blr",
                "city":"Zlr",
    name:"aravind"
        },
        {"facebook":"ashok@facebook.com",
                "homeAddress":"26, New Street, che",
                "officeAddress":"31, Old Office Street, che",
                "city":"che",
    name:"ashok"
        }];

    var modifiedData=$filter('orderBy')(data,'city');
    console.log(modifiedData);
  })

您可以像這樣創建過濾器!

bizBrainCommon.filter('test',function(){返回函數(items,field,sortingValue){var filter = [];

    if(!field || !sortingValue)
        return items;

    angular.forEach(items, function (item) {
        filtered.push(item);
    });


    filtered.sort(function (a, b) {

        var upA = a[field].toUpperCase();

        if (upA > sortingValue.toUpperCase() || upA < sortingValue.toUpperCase()) return 1;

        if (upA == sortingValue.toUpperCase())
            return -1;
    });

    return filtered;
};

});`

HTML將類似於:

ng-repeat="(id, user) in users |test:'fName': search"

希望這個能對您有所幫助!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM