2017-09-12 18 views
0

我有一個Ember.js應用程序,並且對於其中的表單,我正在使用ember-power-select。我已經使用過這個插件,但是我在如何配置selected元素時遇到了一些問題。正如標題所說,我正在尋求幫助以瞭解如何使用函數配置selected
我想用一個從服務中檢索變量的函數來設置選定的變量。如何通過從ember-power-select中選擇的函數

我的組件看起來像:

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。除了選定的部分以外,一切正常。
模板,你可以看到「選擇」是可以在組件內設置的值,但我不想設定一個硬編碼一個值,但是與當前值區域設置
每一個提示和/或幫助表示讚賞!

+0

您的服務是否通過您的選項數組中的相同值傳遞?如果'this.set('language',lang)'與選項不匹配,將無法選擇。 http://www.ember-power-select.com/docs/how-to-use-it – BrandonW

+0

事情是它不會失敗,它只是在我的電源選擇中以明文形式放置該功能。例如,我沒有使用「英語」,而是收到:'language(){ /* *在我的服務appInfo中,我有一個名爲getLocale *的函數,它返回當前的語言環境變量。 */ return this.get('appInfo')。getLocale(); },' – maje

+1

我明白了,最初的問題是'language()'是一個函數而不是屬性。但即使這樣,權力選擇文檔也會說選項是隻讀的,所以不應該聲明新的選項。我會自己測試一下,看看我能找到什麼。 – BrandonW

回答

0

剛剛解決它,我用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在灰燼功率選插件做什麼。

相關問題