使用 Breeze 离线数据时出现问题,获取未定义的数据不是函数
Trouble using Breeze offline data getting undefined is not a function
我在 breeze 中使用离线数据时遇到问题,在线时大多数功能都可以正常工作。
然后一个错误undefined is not a function出现在我猜想调用这个函数的函数中
$scope.getPagedDataAsync = function (pageSize, page, searchText) {
var skip = (page - 1) * pageSize;
var take = pageSize * 1;
app.dataservice.getCustomerPage(skip, take, searchText)
.then(customersQuerySucceeded);
};
这里是修改后的 getCustomerPage 函数,可以离线工作
function getCustomerPage(skip, take, searchText) {
var importData = window.localStorage.getItem(stashAll);
manager2.importEntities(importData);
var query = breeze.EntityQuery
.from("Customers")
.orderBy("CompanyName")
.skip(skip).take(take)
.inlineCount(true);
if (searchText) {
query = query.where("CompanyName", "contains", searchText);
}
return manager2.executeQueryLocally(query);
}
下面是我声明 manager2 供离线使用的方式
var manager2 = new breeze.EntityManager();
这是我认为出现错误的 customersQuerySucceeded 函数,我在在线样本上工作正常。
function customersQuerySucceeded(data) {
$scope.offlinecustomers = data.results;
if (data.inlineCount) {
$scope.totalServerItems = data.inlineCount;
}
$scope.$apply();
app.logger.info("Fetched " + data.results.length + " Offline Customers ");
}
这是我首先离线获取数据的方式。
manager = new breeze.EntityManager(serviceName);
var query=breeze.EntityQuery
.from("Customers");
manager.executeQuery(query);
var exportData = manager.exportEntities();
window.localStorage.setItem(stashAll, exportData);
原来 executeQueryLocally returns 一个数据,而 executeQuery returns 一个承诺,
错误是因为我指的是承诺中的属性。
我想我必须重写我的代码来说明...
我在 breeze 中使用离线数据时遇到问题,在线时大多数功能都可以正常工作。
然后一个错误undefined is not a function出现在我猜想调用这个函数的函数中
$scope.getPagedDataAsync = function (pageSize, page, searchText) {
var skip = (page - 1) * pageSize;
var take = pageSize * 1;
app.dataservice.getCustomerPage(skip, take, searchText)
.then(customersQuerySucceeded);
};
这里是修改后的 getCustomerPage 函数,可以离线工作
function getCustomerPage(skip, take, searchText) {
var importData = window.localStorage.getItem(stashAll);
manager2.importEntities(importData);
var query = breeze.EntityQuery
.from("Customers")
.orderBy("CompanyName")
.skip(skip).take(take)
.inlineCount(true);
if (searchText) {
query = query.where("CompanyName", "contains", searchText);
}
return manager2.executeQueryLocally(query);
}
下面是我声明 manager2 供离线使用的方式
var manager2 = new breeze.EntityManager();
这是我认为出现错误的 customersQuerySucceeded 函数,我在在线样本上工作正常。
function customersQuerySucceeded(data) {
$scope.offlinecustomers = data.results;
if (data.inlineCount) {
$scope.totalServerItems = data.inlineCount;
}
$scope.$apply();
app.logger.info("Fetched " + data.results.length + " Offline Customers ");
}
这是我首先离线获取数据的方式。
manager = new breeze.EntityManager(serviceName);
var query=breeze.EntityQuery
.from("Customers");
manager.executeQuery(query);
var exportData = manager.exportEntities();
window.localStorage.setItem(stashAll, exportData);
原来 executeQueryLocally returns 一个数据,而 executeQuery returns 一个承诺,
错误是因为我指的是承诺中的属性。
我想我必须重写我的代码来说明...