Лист действий Ionic3 с переменными входами

Мне нужно создать лист действий или какое-либо другое оповещение, которое отображает параметры для пользователя и сохраняет выбранный параметр в переменной. Однако параметры, отображаемые пользователю, должны быть получены из Firestore и различны для каждого пользователя (каждый пользователь также может иметь разное количество параметров).

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

Ниже мой код для функции до сих пор. Список параметров, полученных из Firestore, сохраняется в массиве под названием «параметры».

 categorizeProblem(){
  this.action = this.actionCtrl.create({
   title: "What sort of problem did this student have?",
  })

  this.options.forEach(option => {
  var button = {
    text: option,
    value: //option name
    handler: (data)=> {
      //Need to get the value/name of the option clicked and save this in a variable
    }
  }
  this.action.addButton(button);
})

this.action.present();

}

Я был бы очень признателен, если бы кто-нибудь мог помочь мне с этим или предложить альтернативный способ сделать это.

Заранее спасибо!


person dusterquill    schedule 21.04.2018    source источник


Ответы (1)


Вы можете использовать свойство text в качестве идентификатора. И тогда ваш handler должен использовать старый синтаксис функции, чтобы у вас было значение this handler.

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

presentActionSheet() {
  var self = this;
  let options = [
    "Option1",
    "Option2",
    "Option3"
  ];
  let actionSheet = this.actionSheetCtrl.create({
    title: 'Categories',
  });
   options.forEach(option => {
    actionSheet.addButton({
      text: option,
      handler: function() {
        self.selectedOption = this.text;
      }
    })
  });

  actionSheet.present();
}

Вот рабочий код.

person Adrian    schedule 21.04.2018
comment
Рад, что это помогло! - person Adrian; 21.04.2018