javascript – executeQueryLocally错误

最新版本的Breeze似乎打破了executeQueryLocally.例如:

var query = new breeze.EntityQuery()
            .from("Items").where('id', '==', id);

return manager.executeQueryLocally(query);

我遇到的问题是在getPredicateFn中的stringEquals调用中.

在上面的简单查询的情况下,在id上调用trim()导致a

5 has no method ‘trim’

例外.

这是Breeze stringEquals函数:

 function stringEquals(a, b, lqco) {
    if (lqco.usesSql92CompliantStringComparison) {
        a = (a || "").trim();
        b = (b || "").trim();
    }
    if (!lqco.isCaseSensitive) {
        a = (a || "").toLowerCase();
        b = (b || "").toLowerCase();
    }
    return a == b;
}

编辑

id在Items模型上定义为int,在JavaScript中是数字.早期版本的Breeze没有做stringEquals所以没有尝试修剪数字.

解决方法:

好的,这应该是固定的.请查看v0.73.1. Breeze谓词现在将在比较不同类型的值(如字符串与数字)时执行类型强制.

上一篇:javascript – breezejs:为经典的ODATA服务调用savecChanges失败


下一篇:javascript – 无法使我的数据绑定与knockoutJS一起工作