jayData复杂过滤器评估

时间:2016-01-09 23:37:03

标签: jaydata

我是jayData的新手,我正在尝试过滤实体集。过滤器需要执行超出我在样本中看到的复杂评估。

以下是我要完成的工作示例(listView行不是,只是为了显示我打算对数据做什么):

function () {
                var weekday = moment().isoWeekday()-1;
                console.log(weekday);
                var de = leagueDB.DailyEvents.toArray(function (events) {
                    console.log(events);
                    var filtered = [];
                    for (var e = 0; e < events.length;e++) {
                        console.log(events[e]);
                        console.log(events[e].RecurrenceRule);
                        var rule = RRule.fromString(events[e].RecurrenceRule);
                        var ruleOptions = rule.options.byweekday;
                        var isDay = ruleOptions.indexOf(weekday);
                        console.log(ruleOptions, isDay);
                        if(isDay =! -1)
                        {
                            filtered.push(events[e]);
                        }
                    }
                    $("#listView").kendoListView({dataSource:filtered});
                });

基本上它只是评估一个重复的规则字符串,以查看当前日期是否符合该条件,如果是,则将该事件添加到列表中以供查看。

但是当我尝试这样做时它会爆炸:

eventListLocal:leagueDB.DailyEvents.filter(function(e){
                console.log("The Weekday is:"+viewModel.weekday);
                console.log(e);
                console.log("The recurrence rule is:"+e.RecurrenceRule);
                var rruleOptions = viewModel.rruleOptions(e.RecurrenceRule);
                if (rruleOptions !== -1) {
                    return true;
                }

            }).asKendoDataSource()

产生的错误是: 例外:无法解析类型:未定义

事情是它似乎发生在“e”和控制台日志之类的事件没有被传入。但是,我也没有看到列表。简而言之,我对发生的事情感到困惑。

任何帮助将不胜感激。 谢谢,

1 个答案:

答案 0 :(得分:0)

你不能写这样的过滤表达式。

当您编写.filter(...)时,jaydata将解析您的表达式,然后它将为底层提供程序生成过滤器,例如webSql和oDataProvider的$ filter。

JayData表达式解析器和数据提供者本身都应该理解你的过滤器。

您的过滤器不适合此方法,因为您的大多数代码都不熟悉jaydata表达式解析器和基础数据提供程序,例如您的console.log等。

您可以简化过滤器,或者您应该将所有数据加载到数组中,然后您可以使用数组本身的过滤方法,在那里,您可以编写您喜欢的任何过滤器,并且您的过滤器将起作用。当然,在您的数据集较大的某些情况下,这会出现性能问题。

详细了解http://jaydata.org/tutorials/entityexpressions-the-heart-of-jaydata