变量server = gevent.wsgi.WSGIServer(('', 80), someWSGIApp)
gevent.signal(signal.SIGTERM, server.stop)
server.serve_forever()
gevent.get_hub().join()
应该是包含很多项的数组。
项目将被逐个推入datelist
函数中的列表中。
以下示例中的oModel.attachRequestComplete()
列出了所有必需项(10个项)。
但是,console.log(datelist)
属性是datelist.length
。
数组如何包含10个元素,但其长度为0
?
预期结果:
0
应该包含所有项目datelist
应该是datelist.length
> 0
答案 0 :(得分:1)
oModel.loadData
将异步请求数据。
请求完成后,将调用您传递给attachRequestCompleted
的回调(执行将在loadData()
上不阻塞,直到有可用数据为止)
运行console.log(datelist, datelist.length);
行时,datelist
仍将是一个空数组。
之所以可以在浏览器控制台中看到数组中的项目,是因为检查请求时该请求已经完成。
您可以在浏览器控制台中尝试以下操作:
var arr = [];
console.log(arr, arr.length); // [], 0
arr.push(1); arr.push(2); arr.push(3);
// console.log(arr, arr.length); // [1,2,3], 3
第一个日志将输出数组,当您对其进行检查时,项目将在此处-当您访问.length
时它们还不存在。
要解决此问题,您可以将datelist
保留在请求完成的处理程序中:
var oModel = new sap.ui.model.json.JSONModel();
oModel.attachRequestCompleted(function() {
var oFeiertageBerlin = oModel.getData().BE;
var datelist = [];
for (var prop in oFeiertageBerlin) {
datelist.push(oFeiertageBerlin[prop].datum);
}
console.log(datelist, datelist.length);
// do something with the datelist here
});
var jDatum = new Date();
var jLink = "https://feiertage-api.de/api/?jahr=" + jDatum.getFullYear();
oModel.loadData(jLink);
使用sapui,您可以将数组作为json模型返回,然后可以绑定到视图中:
function loadHolidays() {
var result = new sap.ui.model.json.JSONModel({datelist: []});
var oModel = new sap.ui.model.json.JSONModel();
oModel.attachRequestCompleted(function() {
var oFeiertageBerlin = oModel.getData().BE;
var datelist = [];
for (var prop in oFeiertageBerlin) {
datelist.push(oFeiertageBerlin[prop].datum);
}
result.setData({datelist: datelist});
});
var jDatum = new Date();
var jLink = "https://feiertage-api.de/api/?jahr=" + jDatum.getFullYear();
oModel.loadData(jLink);
return result;
}
var model = loadHolidays();
// attach model to view
// e.g. sap.ui.getCore().setModel(model);
柱塞示例,日期显示在表格中:Plunker Holiday Example