【发布时间】:2015-09-28 22:42:34
【问题描述】:
我正在尝试使用 Breeze 将数据从服务器获取到 AngularJS 应用程序中,尽管服务器正在发送 JSON 数据,但客户端应用程序没有得到它。我最接近使用调试器识别问题的是看到以下函数getRemoteEntities(),它是工厂的一部分,应该返回一个承诺,但当使用有效的 entityURL 调用时返回一个空的 Object {} 和json适配器:
[...]
var manager = entityManagerFactory.newManager();
[...]
return {
getRemoteEntities: function (entityUrl, jsonAdapter) {
var query = breeze.EntityQuery
.from(entityUrl)
.using(jsonAdapter);
return manager.executeQuery(query)
.then(function (results) {
return results;
})
.catch(function (error) {
return $q.reject(error);
});
}
}
我已经检查过了,代码确实使用了 here 中描述的 Breeze Angular 服务。我不明白什么不起作用。
编辑:删除 .using(jsonAdapter) 意味着我能够获得并解决承诺,这表明它可能正在做一些搞砸的事情。这是一个例子(他们都遵循这个模式):
.value('jsonProfileResultsAdapter', new breeze.JsonResultsAdapter({
name: "xyz", // mild obfuscation
extractResults: function (data) {
var results = data.results;
if (!results) throw new Error("Unable to resolve 'results' property");
return results;
},
visitNode: function (node, parseContext, nodeContext) {
if (node) {
if (node.person && node.assignments) {
return {entityType: "EmployeeModel"}
}
}
}
}))
【问题讨论】: