Как перезагрузить сервис 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) ;
} 
Другие вопросы по тегам