【发布时间】: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