我正在使用breeze.js在客户端上获取一些serverdata,这很好用。为了创建一个更模块化的应用程序,我想创建一个'dataservice'来捆绑breeze查询的1个模块,作为依赖包含在其他模块中。
这是模块:
define(function () {
var serviceName = window.location.protocol + "//" + window.location.host + '/breeze/n0uk', // route to the Web Api controller
manager = new breeze.EntityManager(serviceName);
function getPoster(callsign) {
var query = breeze.EntityQuery.from('Posters').where("Callsign","==",callsign);
return manager.executeQuery(query);
};
return {
getPoster:getPoster
};
});
我已经创建了一个testmodule来测试函数:
define(["common/dataService"],function(n0uk) {
alert("home/index geladen");
n0uk.getPoster("pe1l").then(function(data) {
alert(data.Name);
}
);
});
遗憾的是没有返回数据。我很轻松,需要newby(而且js经验也不是topnotch)。有人能引导我朝着正确的方向前进吗?答案 0 :(得分:0)
在您的测试模块中,您正在执行alert(data.Name)
。 breeze查询将返回一个具有名为results
的数组属性的对象,因此您可能希望使用以下内容:
define(["common/dataService"],function(n0uk) {
alert("home/index geladen");
n0uk.getPoster("pe1l")
.then(function(data) {
alert(data.results.length.toString() + ' items returned');
})
.fail(function(reason) { alert(reason); });
});
其他尝试:
使用浏览器的F12工具(或visual studio)设置断点并检查查询结果。
使用fiddler"检查员"选项卡确认您的api调用返回数据:
有关executeQuery
方法返回的更多信息,请查看此处(滚动到" executeQuery"):
http://www.breezejs.com/sites/all/apidocs/classes/EntityManager.html