Framework7 изменить текст кнопки диалога (например, для перевода) - PullRequest
1 голос
/ 08 мая 2019

Я использую Framework7 для создания мобильного приложения. Это приложение должно иметь возможность изменить язык. Для этого я использую объект с ключом для языка, который содержит объект с ключами для идентификации текста и текста для вставки. Это выглядит так:

var translations = {
  "en": {
    "btn-confirm": "Confirm",
    "btn-decline": "Decline"
  },
  "de": {
    "btn-confirm": "Bestätigen",
    "btn-decline": "Abbrechen"
  }
};

Я создал такой диалог:

var dialog_appReset = app.dialog.create({
  title: 'Warning!',
  text: 'You are resetting the app. Are you sure?',
  buttons: [
    {
      text: 'Confirm',
      onClick: function() {
        console.log('confirmed');
      }
    },
    {
      text: 'Decline',
      onClick: function() {
        console.log('declined');
      }
    }
  ]
});

Теперь я хочу изменить содержимое диалога при смене языка. Для этого я получаю перевод для элемента для выбранного языка и хочу заменить текст.

Существуют методы для изменения заголовка и текста диалога, но не для текстов кнопок.

Поэтому я попытался изменить текст кнопки следующим образом: dialog_appReset.buttons[0].text = 'Bestätigen', что изменяет содержимое, но не обновляет диалоговое окно.

После некоторых попыток у меня появилось решение обновить тексты кнопок, но это не очень красиво:

  1. Получить фактические параметры диалога
    var tempDialogParams = dialog_appReset.params;
  2. Обновить эти параметры
    tempDialogParams.buttons[0].text = translations['de'].btn-confirm;
    tempDialogParams.buttons[1].text = translations['de'].btn-decline;
  3. Уничтожить текущий диалог
    dialog_appReset.destroy();
  4. Создать новый диалог
    dialog_appReset = app.dialog.create(tempDialogParams);

Это единственный способ обновить текст кнопки для инициализированного диалога? Или есть более привлекательный способ для этого?

Примечание: в настоящее время я использую Framework7 v3 , но я не могу найти путь и в v4.

...