Как передать функцию в выбранном из ember-power-select

У меня есть приложение Ember.js, и для формы в нем я использую ember-power-select . Я уже использовал этот аддон, но у меня возникли проблемы с настройкой элемента selected. Как говорится в заголовке, я прошу помощи в настройке selected с помощью функции.
Я хочу установить выбранную переменную с помощью функции, которая извлекает переменную из службы.

Мой компонент выглядит так:

import Ember from 'ember'; 

export default Ember.Component.
    appInfo: Ember.inject.service('app-info'),

    languageOption: ['Français', 'English'],
    language() {
       /*
       * In my service appInfo, I have a function called getLocale
       * that return the current locale variable.  
       */
       return this.get('appInfo').getLocale();
       },

       actions: {
           changeLanguage(lang)
           {
              this.set('language', lang);
           }
        }
});

И мой шаблон выглядит так:

{{#power-select
          selected=language
          options=languageOption
          searchEnabled=false
          onchange=(action 'changeLanguage')
          placeholder=language
        as |lang|}}
          {{lang}}
{{/power-select}}

Как видите, я пытаюсь установить значение selected с текущим значением locale, полученным через сервис appInfo. Все работает нормально, за исключением выбранной части.
В шаблоне вы можете видеть, что "выбрано" – это значение, которое можно задать внутри компонента, за исключением что я не хочу устанавливать значение с жестко запрограммированным значением, а с текущим значением locale.
Каждый совет и/или помощь приветствуются!


person maje    schedule 12.09.2017    source источник
comment
Передает ли ваша служба те же значения, что и в вашем массиве параметров? Если this.set('language', lang) не соответствует варианту, он не сможет выбрать. ember-power-select.com/docs/how-to- использовать-это   -  person BrandonW    schedule 12.09.2017
comment
Дело в том, что он не терпит неудачу, он просто помещает функцию в виде простого текста в мой выбор мощности. Например, вместо «английского» я ​​получил: language() { /* * In my service appInfo, I have a function called getLocale * that return the current locale variable. */ return this.get('appInfo').getLocale(); },   -  person maje    schedule 12.09.2017
comment
Понятно, ну, изначальная проблема в том, что language() — это функция, а не свойство. Но даже если бы это было так, в документах по выбору мощности говорится, что параметры доступны только для чтения, поэтому новый нельзя объявить. Я проверю это сам и посмотрю, что я могу найти.   -  person BrandonW    schedule 12.09.2017


Ответы (1)


Просто решил это, я использовал init(), чтобы заставить его работать. Как сказал в комментарии @BrandonW, вычисляемое свойство тоже не работает.

Это код, который я поместил в свой компонент:

***
   init() {
        this._super(...arguments);
        let loc = this.get('appInfo').getLocale();
        if (loc === 'fr')
            this.set('language', 'Français');
        else
            this.set('language', 'English');
    }
***

Это то, что вам нужно сделать, если вы хотите использовать функцию для установки selected в аддоне ember-power-select.

person maje    schedule 12.09.2017