ng-options和不显示angular.js的唯一过滤器

Mit*_*hVz 3 unique filter angularjs ng-options

在我的JavaScript中,我有一个数组

$scope.quoteList =        
    [
        {
            select: false,
            laymansDescription: "Nathan",
            quoteNumber: "ING-70440-21",
            version: "02",
            quoteDate: "Feb 5,2013",
            expirationDate: "Aug 5,2013",
            internalNotes: "This quote is using test data",
        },
        {
            select: false,
            laymansDescription: "Mitch",
            quoteNumber: "ING-70440-01",
            version: "02",
            quoteDate: "Feb 5,2013",
            expirationDate: "Aug 5,2013",
            internalNotes: "This quote is using test data",
        },
        {
            select: false,
            laymansDescription: "Stephen",
            quoteNumber: "ING-70440-01",
            version: "02",
            quoteDate: "Feb 5,2013",
            expirationDate: "Aug 5,2013",
            internalNotes: "This quote is using test data",
        }
    ];
Run Code Online (Sandbox Code Playgroud)

而我正在尝试制作一个只显示唯一quoteNumbers的选择器,即.ING-70440-21和ING-70440-01.但是当我尝试在角度中使用'unique'选项时,没有任何东西出现.

<select class="form-control" ng-options="quote.quoteNumber for quote in quoteList | unique:'quoteNumber'" ng-model="quoteModel1" />
Run Code Online (Sandbox Code Playgroud)

没有唯一标签,它工作正常.我究竟做错了什么?我对角度很新,所以它可能非常简单.

Alw*_*ner 19

AngularJS没有内置unique过滤器.你可以做这样的事情来制作你自己的:

app.filter('unique', function() {
    return function(input, key) {
        var unique = {};
        var uniqueList = [];
        for(var i = 0; i < input.length; i++){
            if(typeof unique[input[i][key]] == "undefined"){
                unique[input[i][key]] = "";
                uniqueList.push(input[i]);
            }
        }
        return uniqueList;
    };
});
Run Code Online (Sandbox Code Playgroud)

  • 在函数打开后添加if(typeof input =='undefined'){return;}以避免'undefined'错误 (2认同)