Заблокируйте и разблокируйте метку для редактирования, нажав: Ionic - PullRequest
0 голосов
/ 25 июня 2018

enter image description here

Я хочу что-то подобное, как показано на рисунке выше.Когда я нажимаю на кнопку редактирования, я могу редактировать метку (немного о вас), как я могу это сделать.

<ion-item-divider>
      <ion-label>Summary</ion-label>
      <button ion-button clear item-end style="font-size:11px;color: #3BABE3;font-weight:bold;">Edit
        <ion-icon name="ios-arrow-forward" class="arrow"></ion-icon>
      </button>
  </ion-item-divider>

      <ion-item class="items">
        <p style="color:grey;font-size:11px;">A little about you</p>

      </ion-item>

Метка должна быть заблокирована, когда я нажимаю на кнопку редактирования, она должнабыть редактируемым.

Я даю «Немного о вас» переменной, называемой Summary.

<p style="color:grey;font-size:11px;">A little about you</p>

На самом деле это должно быть <textarea> вместо <p>

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

У меня был похожий пример потребности / кода, и через некоторое время я понял, что попросить пользователей отредактировать вашу встроенную ионную метку в том же виде - это в основном плохой UX.

Подумайте о том, чтобы сделать эту кнопку "отредактированной" вашей, чтобы просто вызвать контроллер предупреждений, который будет содержать поле ввода. Вот как я это сделал ниже, и в моем случае у меня не было специальной кнопки «редактировать» - пользователи могли щелкнуть заголовок, чтобы изменить его имя. Но я думаю, что вы получите способ, которым вы можете сделать это в вашем случае

<ion-item *ngFor="let set of sets; index as i">
    <button ion-button clear (click)="changeSetTitle( set.title, i)">
      <h2>{{ set.title }}</h2>
    </button>
    <p>{{ set.length }} items</p>
    <button ion-button icon-right clear item-end (click)="loadSetComponent(i)">
      Manage
      <ion-icon name="arrow-forward"></ion-icon>
    </button>
</ion-item>

А в файле ts:

changeSetTitle(currentTitle, index) {
    this.alertOn = true;
    let alert = this.alertCtrl.create({
      title: 'Change name:',
      message: 'current: "'+currentTitle+'"',
      inputs: [
        {
          placeholder: 'type in a new name'
        }
      ],
      buttons: [
        {
          text: 'Cancel',
          role: 'cancel',
          handler: data => {
            console.log('Cancel clicked');
            this.alertOn = false;
          }
        },
        {
          text: 'Confirm',
          handler: data => {
            if (data[0].length === 0) {
              this.sets[index].title = currentTitle;
            } else {
              this.saveRequired = true;
              this.sets[index].title = data[0];
            }
            this.alertOn = false;
          }
        }
      ]
    });
    // small trick to force focus onto alert (not working for iOS unfortunately.)
    alert.present().then(() => {
      const alertInput: any = document.querySelector('input.alert-input');
      alertInput.focus();
      return;
    });
  }
0 голосов
/ 25 июня 2018

Попробуйте использовать атрибут contenteditale.

<ion-item class="items">
    <p contenteditable="true" style="color:grey;font-size:11px;">A little about you</p>
</ion-item>

Если вы хотите связать его с переменной, вы можете сделать это следующим образом:

<ion-item class="items">
    <p [attr.contenteditable]="editable" style="color:grey;font-size:11px;">A little about you</p>
</ion-item>

Где editable - логическая переменная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...