Javascript AngularJS按唯一日期筛选

Javascript AngularJS按唯一日期筛选,javascript,angularjs,Javascript,Angularjs,我有以下格式的数据: [ { title: 'foo', date: '2013-11-27' }, { title: 'foo1', date: '2014-02-07' }, { title: 'foo2', date: '2014-06-13' }, { title: 'foo3', date: '2015-

我有以下格式的数据:

[
    {
        title: 'foo',
        date: '2013-11-27'
    },
    {
        title: 'foo1',
        date: '2014-02-07'
    },
    {
        title: 'foo2',
        date: '2014-06-13'
    },
    {
        title: 'foo3',
        date: '2015-02-28'
    },
    {
        title: 'foo4',
        date: '2015-05-10'
    },
]
使用Angular,我想首先在下拉列表中显示唯一的年份。 我如何创建一个过滤器,用于使dropdownlist包含2013年、2014年和2015年,并且每年仅显示一次的列表

其次,当用户在dropdownlist中选择2014时,我只希望显示该年的项目,因此在本例中仅显示foo1和foo2。
比如说,我如何过滤一个div 必须创建自定义筛选器

var-app=angular.module'app',[]; 应用程序控制器'MainCtrl',函数$scope{ $scope.items= [ { 标题:"富",, 日期:2013年11月27日 }, { 标题:“foo1”, 日期:2014-02-07 }, { 标题:“foo2”, 日期:2014-06-13 }, { 标题:“foo3”, 日期:2015-02-28 }, { 标题:“foo4”, 日期:“2015-05-10” } ]; //检查项目是否已在项目中 var isDuplicate=函数项,项{
forvar i=0;i这里有一个非常简单的方法。链接到fiddle:

HTML:


你能展示一下你尝试了什么吗?我们可以在这个解决方案的基础上编辑帖子,包括我希望用户看到的示例。我理解你希望用户看到的内容。我不理解的是你为什么没有尝试这个问题。我尝试了好几次,但都没有远程工作。我还没有找到答案通过谷歌搜索过滤股票,或者通过日期过滤的例子,或者如何只显示唯一的年份。所以我真的没有什么可以展示我所做的,因为我没有得到任何工作。你可以分享失败的尝试,伙计。重要的是你尝试了。这与我已经尝试过的并不太远,但我在某个时候太新手了ngular无法将所有内容都放在一起。谢谢!我注意到您使用了子字符串来解析日期。在一些谷歌搜索中,AngularJS确实有一些内置的日期功能。是否可以将此过滤器用于代码的实现?是否也可以在JavaScript中使用date类?您可以我使用$filter添加了代码,用Angular实现。感谢您提供了更简单的解决方案。因为我最终使用了这个而不是另一个,所以我接受了这个答案。
<div ng-app>
  <div ng-controller="ClickToEditCtrl">
      <select ng-model="selYear">
        <option ng-repeat="year in years" >{{year}}</option>
      </select>
      <select ng-model="selDate">
        <option ng-repeat="obj in data | filter:selectDatesByYear">{{obj.date}} - {{obj.title}}</option>
      </select>
  </div>
</div>
function ClickToEditCtrl($scope) {
    $scope.data=[
    {
        title: 'foo',
        date: '2013-11-27'
    },
    {
        title: 'foo1',
        date: '2014-02-07'
    },
    {
        title: 'foo2',
        date: '2014-06-13'
    },
    {
        title: 'foo3',
        date: '2015-02-28'
    },
    {
        title: 'foo4',
        date: '2015-05-10'
    },
];
    $scope.years = [];
    $scope.selYear = "2013";
    angular.forEach($scope.data, function(value, key) {
        if (this.indexOf(value.date.substring(0,4)) ==  -1)
          this.push(value.date.substring(0,4));
    }, $scope.years);

    $scope.selectDatesByYear =  function  (obj) {
        if (obj.date.substring(0,4) == $scope.selYear) return true;
        return false;
    }
}