【问题标题】:Accessing fields of filter object of Datasource in KendoUI在 Kendo UI 中访问 Datasource 的过滤器对象的字段
【发布时间】:2015-03-24 18:01:23
【问题描述】:

对于这个例子,我从本网站的其他地方提取代码:

<script>
 var dataSource = new kendo.data.DataSource({
 data: [
    { name: "Jane Doe" },
    { name: "John Doe" }
 ],
 filter: { field: "name", operator: "startswith", value: "Jane" }
});
var filter = dataSource.filter();
console.log(filter.logic);  // displays "and"
console.log(filter.filters[0]); displays '{field: "name", operator: "startswith", value: "Jane"}'
</script>

当我尝试时

 console.log(filter.filters[0]["field"]);

 console.log(filter.filters[0].field);

 console.log(filter.filters.field);

我不断收到消息

TypeError: fitem.filters[0] 未定义

或类似的。我正在寻找抛出值“name”的表达式。

如何做到这一点?

【问题讨论】:

    标签: javascript kendo-ui kendo-datasource


    【解决方案1】:

    根据您的TypeError,它表示您正在使用fitem.filters[0],并且您在发布的代码中的任何地方都没有声明fitem。这可能是你的问题。

    使用filter.filters[0].field 效果很好。这是一个jsfiddle,它显示了它的实际效果。

    这可能是范围问题,或者您在声明数据源之前以某种方式调用它。能否提供更多代码?

    【讨论】:

    • 你是对的。实际上,这是在 Multiselect 中,并且出现错误是因为它试图在字段获得焦点后进行过滤。我通过在返回参数映射之前执行 typeof == undefined 检查来防止这种情况发生,因此它现在仅在定义对象时触发。不过,我确信有更有效的方法来做到这一点。
    猜你喜欢
    • 2014-08-23
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多