Обработка обновления браузера с фильтрами запросов по параметрам страницы - PullRequest
0 голосов
/ 14 мая 2019

У меня есть два источника данных

  1. Активы

  2. Местоположения

Активы имеют одинОтношение ко многим с местоположениями

Активы имеют источник данных построителя запросов, AssetLocFiltered, для которого задано следующее:

ParentLocationKey =:ParentLocationKey

ParentLocationKey - это поле отношения для таблицы местоположений.

На домашней странице вы выбираете местоположение и затем нажимаете кнопку, которая передает идентификатор местоположения параметру на странице ShopPageDemo.со следующим кодом

app.pages.ShopPageDemo.properties.ParentLocationKey = 
widget.datasource.item.Id;
console.log(widget.datasource.item.Id);
app.showPage(app.pages.ShopPageDemo);

На одной странице ShopPageDemo существует табличное представление AssetLocFiltered, которое устанавливает параметр запроса в событии ondataload со следующим кодом:

widget.root.datasource.query.parameters.ParentLocationKey = 
widget.root.properties.ParentLocationKey;
widget.root.datasource.load();

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

1 Ответ

0 голосов
/ 15 мая 2019

Существует несколько способов сделать это;Тем не менее, подход, который я обычно использую, предполагает глубокие связи.В вашем случае вам нужно сделать что-то вроде этого:

1.) На кнопку, которая переводит вас на следующую страницу, добавьте этот код:

var params = {
  key: widget.datasource.item.Id
};    
var page = app.pages.ShopPageDemo;
app.showPage(page);
google.script.history.replace(null, params, page.name);

2.)В обработчик событий ShopPageDemo onAttach добавьте следующее:

google.script.url.getLocation(function(location) {
  widget.root.properties.ParentLocationKey = location.parameter.key;
  var ds = widget.datasource;
  ds.query.parameters.ParentLocationKey = widget.root.properties.ParentLocationKey;
  ds.load();
});

Для повышения производительности я бы установил для источника данных ShopPageDemo значение NOTзагружать автоматически, а также выгружать его данные в обработчик событий onDetach , например: widget.datasource.unload().

Ссылка:
1. https://developers.google.com/apps-script/guides/html/reference/history
2.https://developers.google.com/apps-script/guides/html/reference/url

...