javascript - 使用 OData 模型在间隔时间内更改表格的单元格
问题描述
我有这个代码,我需要我的表格显示前 10 名患者,并在 10 秒后显示接下来的 10 名患者,而无需触摸任何按钮(自动)。
我正在寻找类似的东西:https ://embed.plnkr.co/ioh85m5OtPmcvPHyl3Bg/
但是使用 OData 模型(在我的视图和控制器上指定)。
这是我的看法:
<Table id="tablaPacientes" items="{/EspCoSet}">
<columns>
<!-- ... -->
</columns>
<ColumnListItem>
<ObjectIdentifier title="{Bett}" />
<!-- ... -->
</ColumnListItem>
</Table>
这是我的控制器:
onInit: function () {
var oModel = this.getOwnerComponent().getModel("zctv");
this.getView().setModel(oModel);
},
onBeforeRendering: function () { // method to get the local IP because I need it for the OData
var ipAddress;
var RTCPeerConnection = window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
var self = this;
function grepSDP (sdp) {
var ip = /(192\.168\.(0|\d{0,3})\.(0|\d{0,3}))/i;
sdp.split('\r\n').forEach(function (line) {
if (line.match(ip)) {
ipAddress = line.match(ip)[0];
self.setIp(ipAddress);
}
});
}
if (RTCPeerConnection) {
(function () {
var rtc = new RTCPeerConnection({
iceServers: []
});
rtc.createDataChannel('', {
reliable: false
});
rtc.onicecandidate = function (evt) {
if (evt.candidate) {
grepSDP(evt.candidate.candidate);
}
};
rtc.createOffer(function (offerDesc) {
rtc.setLocalDescription(offerDesc);
}, function (e) {
console.log("Failed to get Ip address");
});
})();
}
},
setIp: function (ip) {
this.getView().byId("planta").bindElement({
path: "/CenTVSet('" + ip + "')"
});
var oModel = this.getView().getModel();
var that = this;
oModel.read("/CenTVSet('" + ip + "')", {
success: function (oData, oRes) {
var einri = oData.Einri;
var orgpf = oData.Orgpf;
var oTable = that.getView().byId("tablaPacientes");
var oBinding = oTable.getBinding("items");
var aFilters = [];
var filterO = new Filter("Orgna", sap.ui.model.FilterOperator.EQ, orgpf);
aFilters.push(filterO);
var filterE = new Filter("Einri", sap.ui.model.FilterOperator.EQ, einri);
aFilters.push(filterE);
oBinding.filter(aFilters);
}
});
}
我搜索了一些功能,IntervalTrigger
但我真的不知道如何在这个例子中使用它。
解决方案
- 您可以使用 bindItems 绑定您的项目,传递 skip、top 参数并将整个事物包装在 setInterval 中
var iSkip = 0;
var iTop = 10;
setInterval(function() {
table.bindItems("/EspCoSet", {
urlParameters: {
"$skip": iSkip.toString() // Get first 10 entries
"$top": iTop.toString()
},
success: fuction (oData) {
iSkip = iTop; // Update iSkip and iTop to get the next set
iTop+= 10;
}
...
}, 10000); // Each 10 seconds
)
- 几乎相同的事情,只需使用 oModel.read 将实体读入 viewModel.allEntities,将表绑定到 viewModel.shownEntities 并使用 setInterval 从 allEntities 获取下一个 10 以更新 shownEntities。
推荐阅读
- node.js - Nest.js 在生产中运行 main.js 时抛出错误
- c# - 需要了解简短的 ASP.NET 源代码
- javascript - 如何将可选路径和参数推送到 vue 路由器
- class-validator - 为什么我们在使用 class-transformer 时不应该使用 enableImplicitConversion?
- java - 在Java中找到1=>5的函数;2=>4; 3=>3; 4=>2; 5=>1; 6=>7; 7=>6;
- python - 如何在python中清理包含密码的内存?
- vb.net - (Visual Basic 控制台模式)检查从 1 到 7 的数字并打印某些输出?
- featuretools - 如何知道 Featuretools 生成的特征类型?
- c++ - 最低订购要求
- amazon-s3 - "flyway.locations:" 如果 sql 文件在 S3 存储桶中