Есть ли способ динамически добавлять данные в Gird?

У меня есть карусель с n количеством виджетов, и я хочу загрузить еще одно количество элементов в карусель, как только пользователь сфокусирует последний элемент карусели. я добавил afteralign Слушатель событий в карусели для обнаружения навигации между элементами карусели и внутри слушателя. Я создал один виджет и попытался добавить его к текущей карусели, используя appendChildWidget() метод

 _handleLazyLoading: function (evt) {
                var selectedItem = evt.target.getActiveChildWidget().getDataItem();
                if (selectedItem.page < selectedItem.totalPages) {
                    if (evt.target.getActiveChildIndex() === evt.target.getChildWidgetCount() - 3) {
                        var sampleData={"type":"VOD","id":1234,"accessLevel":"GRANTED","title":"sample","description":"A look back at all the Premier League action from the 31st of March 2018.","thumbnailUrl":"url of image","metaFields":{},"tags":
                        ["review","match-round-32"],"watchProgress":0,"favourite":true,"duration":3098,"watchedAt":1522675749000}
                        var videoCard=new CommonVideoCard(sampleData);
                        evt.target.appendChildWidget(sampleData)
                    }
                }
            }

Это то, что код моего слушателя событий. Я также проверил в домене, если я ставлю точку останова после добавления метода, тогда я могу видеть данные в домене, после чего кажется, что конкретная карусель застряла, и я не могу перейти к другим элементам в карусели. Я просто попробую с removeWidget метод, и это работает. Любая помощь будет по достоинству оценена.

1 ответ

Решение

Установить setWidgetLengths(length); после добавления нового дочернего виджета.

Так будет выглядеть код

 _handleLazyLoading: function (evt) {
                var selectedItem = evt.target.getActiveChildWidget().getDataItem();
                if (selectedItem.page < selectedItem.totalPages) {
                    if (evt.target.getActiveChildIndex() === evt.target.getChildWidgetCount() - 3) {
                        var sampleData={"type":"VOD","id":1234,"accessLevel":"GRANTED","title":"sample","description":"A look back at all the Premier League action from the 31st of March 2018.","thumbnailUrl":"url of image","metaFields":{},"tags":
                        ["review","match-round-32"],"watchProgress":0,"favourite":true,"duration":3098,"watchedAt":1522675749000}
                        var videoCard=new CommonVideoCard(sampleData);
                        evt.target.appendChildWidget(sampleData);
                        evt.target.setWidgetLengths(620);
                    }
                }
            }
Другие вопросы по тегам