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;
}
}