【问题标题】:jayData complex filter evaluationjayData 复杂过滤器评估
【发布时间】:2016-01-09 23:37:02
【问题描述】:

我是 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”上,控制台日志就像事件没有被传入一样。但是,我也没有看到列表。简而言之,我真的很困惑发生了什么。

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

【问题讨论】:

    标签: jaydata


    【解决方案1】:

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

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

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

    您的过滤器不适合这种方法,因为您的大多数代码对于 jaydata 表达式解析器和底层数据提供程序(例如您的 console.log 等)并不熟悉。

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

    阅读更多http://jaydata.org/tutorials/entityexpressions-the-heart-of-jaydata

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2021-11-25
      • 2022-11-13
      相关资源
      最近更新 更多