【问题标题】:How to pass a function in selected from ember-power-select如何从 ember-power-select 中传递一个函数
【发布时间】:2018-02-20 22:49:05
【问题描述】:

我有一个 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}}

如您所见,我正在尝试使用通过服务appInfo 获得的当前locale 设置我的selected 值。除所选部分外,一切正常。
模板中,你可以看到'selected'是一个可以在组件中设置的值,除了我不想用硬编码设置值一个,但当前值为 locale
感谢每一个提示和/或帮助!

【问题讨论】:

  • 您的服务传递的值是否与您的选项数组中的值相同?如果this.set('language', lang) 与选项不匹配,它将无法选择。 ember-power-select.com/docs/how-to-use-it
  • 问题是它不会失败,它只是将功能以纯文本形式放在我的电源选择中。例如,我没有收到“英语”,而是收到:language() { /* * In my service appInfo, I have a function called getLocale * that return the current locale variable. */ return this.get('appInfo').getLocale(); },
  • 我明白了,最初的问题是language() 是一个函数而不是一个属性。但即使是这样,power select 文档也说选项是只读的,因此不应该声明一个新选项。我会自己测试一下,看看能找到什么。

标签: javascript ember.js ember-data ember-addon


【解决方案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');
    }
***

如果您想使用 函数 在 ember-power-select 插件中设置 selected,这就是您想要做的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 2017-03-12
    • 1970-01-01
    • 2021-02-16
    相关资源
    最近更新 更多