У меня есть страница, содержащая список отзывов. Если пользователь нажимает на имя, он будет перенаправлен на страницу, где он может редактировать данные обзора, если это необходимо.
Чтобы достичь этого, я адаптировал методы из шаблона утверждения поездки.
Имена в списке - это виджеты ссылок, которые содержат событие onClick, которое я просто адаптировал из шаблона, чтобы получить быстрый результат. Клиентский скрипт интегрирован в событие onAttach на странице.
//button method
if (event.ctrlKey === false && event.metaKey === false) {
event.preventDefault();
app.showPage(app.pages.ReviewDetails);
replaceUrlForEditRequest(widget.datasource.item._key);
}//client script
function startLoadingEditRequestPage() {
google.script.url.getLocation(function(location) {
var requestId = location.parameter.requestId;
var requestDs = app.datasources.Reviews; if (requestDs.creating) {
return;
} if (!requestId) {
app.showPage(app.pages.Dashboard);
return;
} if (requestDs.loaded && requestDs.query.filters._key._equals === requestId) {
return;
} requestDs.unload();
requestDs.query.filters._key._equals = requestId;
requestDs.load();
});
}
Передача на страницу редактирования отлично работает. Пользователь увидит рецензирование лица, на которое он нажал (например, Мэри Поппинс), а не тот, у кого есть активный индекс в списке. Если пользователь нажимает на ссылку "личная информация" на странице сведений о просмотре, он будет перенаправлен на другую страницу редактирования, где он может видеть другую информацию человека. Для этого я просто изменил метод из шаблона, добавив еще одну целевую страницу в историю.
function replaceUrlForEditRequest(requestId) {
var params = {
requestId: requestId
}; google.script.history.replace(null, params, app.pages.EditReview.name);
google.script.history.replace(null, params, app.pages.EditReviewDetails.name);
}
Но когда я дублирую метод кнопки в ссылке на странице сведений о просмотре, это не работает. Я всегда вижу первое имя в моем списке, а не тот, на который я нажал. Как я могу это исправить?
Проблема была решена. Хотя обе страницы были на одной модели, они не были на том же источнике данных. После установки их на тот же источник данных все работает нормально.