gpt4 book ai didi

javascript - AngularJS 列表未显示 - 自定义过滤器有问题吗?

转载 作者:行者123 更新时间:2023-11-30 16:44:57 25 4
gpt4 key购买 nike

我正在尝试解决为什么我的“即将发生的事件”列表没有显示? <强> Live demo here (代码如下)

这是我的 AngularJS View :

<body ng-app="listApp">

<div class="container" ng-controller="EventController">

<h3>Upcoming events:</h3>

<ul ng-repeat="event in events | upcomingEvents | limitTo: 2">
<li>{{ event.title }}</li>
<li>{{ event.start }}</li>
</ul>

</div>

这是我的 Controller 和一个自定义过滤器:

<script type="text/javascript" src="angularjs/angular.min.js"></script>
<script>

var app = angular.module('listApp', []);

app.controller('EventController', function($scope, $http){
$http.get('events.json').success(function(data) {
$scope.events = data;
})
});

app.filter('upcomingEvents', function () {
return function (input) {

var upcomingEvents = [];

upcomingEvents = input.filter(function (data) {
var currentDate = new Date();

if ((data.start - currentDate) >= 0) {
return true;
} else {
return false;
}
});

upcomingEvents.sort(function (a, b) {
return a.start - b.start;
});

return upcomingEvents;
};
});

</script>

这是我的 events.json 提要:

[
{
"title": "All Day Event",
"start": "2015-07-13",
"allDay": true
},
{
"title": "Long Event",
"start": "2015-07-05",
"end": "2015-07-13"
},
{
"title": "Repeating Event",
"start": "2015-07-15",
"allDay": false
},
{
"title": "first time",
"start": "2015-07-31"
}
]

我在 Chrome 的控制台中收到错误消息,但不确定这是什么意思。

控制台错误:

TypeError: Cannot read property 'filter' of undefined
at http://ogmda.com/sandbox/listings.html:44:31
at fn (eval at <anonymous> (http://ogmda.com/sandbox/angularjs/angular.min.js:212:83), <anonymous>:2:191)
at Object.<anonymous> (http://ogmda.com/sandbox/angularjs/angular.min.js:117:376)
at n.$get.n.$digest (http://ogmda.com/sandbox/angularjs/angular.min.js:132:124)
at n.$get.n.$apply (http://ogmda.com/sandbox/angularjs/angular.min.js:135:269)
at http://ogmda.com/sandbox/angularjs/angular.min.js:19:437
at Object.e [as invoke] (http://ogmda.com/sandbox/angularjs/angular.min.js:39:156)
at d (http://ogmda.com/sandbox/angularjs/angular.min.js:19:358)
at Ac (http://ogmda.com/sandbox/angularjs/angular.min.js:20:151)
at Zd (http://ogmda.com/sandbox/angularjs/angular.min.js:18:464)

有人对我如何继续修复有任何建议吗?谢谢。

最佳答案

改变

 if ((data.start - currentDate) >= 0) 

到:

if ((new Date(data.start) - currentDate) >= 0) 

data.start 只是日期的字符串表示。将其转换为 Date 1st

修复了 中的演示 Fiddle


TypeError: Cannot read property 'filter' of undefined

似乎在你的代码中 input value = undefined 因为一开始你没有 $scope.eventsinput.filter(...) 失败。

所以在你的过滤器中添加类似的东西:

var upcomingEvents = [];

if(!input){
return upcomingEvents;
}

或在 Controller 中启动 $scope.events = [](最佳选择)

关于javascript - AngularJS 列表未显示 - 自定义过滤器有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31394019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com