我正在尝试使用Breeze将服务器中的数据导入AngularJS应用程序,虽然服务器正在发送JSON数据,但客户端应用程序却没有获取它。我最接近使用调试器识别问题的方法是看到以下函数getRemoteEntities()
(它是Factory的一部分)应该返回一个promise但是在调用时返回一个空的Object {}一个有效的entityURL和jsonAdapter:
[...]
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 Service。我不明白什么不起作用。
编辑:删除.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"}
}
}
}
}))
答案 0 :(得分:0)
jsonAdapter
在做什么?这是一个不寻常的功能(没错,只是不寻常)。也许你在其中做了一些事情,这会破坏你的承诺。
把它带走,看看你得到了什么。如果你得到了承诺,即使是失败的承诺,那么你还要做些什么。