Как перезагрузить сервис Json каждые 10 секунд SAPUI5
Я новичок в SAPUI5. Я хочу перезагрузить службу json каждые 10 секунд. Мой код контроллера есть.
modelServices :function()
{
var oModeldata = new sap.ui.model.json.JSONModel("https://my-example.com/status/");
this.getView().setModel(oModeldata, "datalake");
},`
я вызываю этот метод из функции инициализации контроллера, и мой взгляд
<TileContainer id="lstDataLakeView" tiles="{datalake>/collectionStatus}">
<CustomTile class="sapMTile" borderVisible="true">
<l:VerticalLayout class="sapUiContentPadding" width="100%">
<l:content>
<core:Icon src="sap-icon://database" class="size2" color="#55acee">
<core:layoutData>
<FlexItemData growFactor="1"/>
</core:layoutData>
</core:Icon>
<FlexBox alignItems="End" justifyContent="End">
<items>
<Text text="Size {datalake>size}" tooltip="Size"/>
</items>
</FlexBox>
</l:content>
</l:VerticalLayout>
</CustomTile>
</TileContainer>
Я хочу обновлять эту плитку через каждые 10 секунд. Я знаю, что есть метод в javascript setTimeInterval (функция, время); или setTimeOut(), но теперь я уверен, как я могу его использовать.
2 ответа
Решение
modelServices :function()
{
var that = this;
var oModeldata = new sap.ui.model.json.JSONModel("https://my-example.com/status/");
this.getView().setModel(oModeldata, "datalake");
setInterval( function() { that.modelServices (); }, 10000 );
},
Пожалуйста, будьте осторожны, чтобы не позвонить setInterval()
в обратном вызове. В противном случае у вас будет 2 таймера, запущенных после первого обратного вызова, и удваивайте его каждые 10 секунд.
Также вы должны убедиться, что вы остановили таймер, если ваш вид больше не отображается.
modelServices :function()
{
var oModeldata = new sap.ui.model.json.JSONModel();
this.getView().setModel(oModeldata, "datalake");
this.intervalHandle = setInterval(function() {
//No need to create and assign a new model each time. Just load the data.
oModeldata. loadData("https://my-example.com/status/");
}, 10000); //Call setInterval only once
},
onExit:function() {
// You should stop the interval on exit.
// You should also stop the interval if you navigate out of your view and start it again when you navigate back.
if (this.intervalHandle)
clearInterval(this.intervalHandle) ;
}