Ember.js 电源选择不显示所选值
我的电源选择将不显示所选值 我在这个组件中有三个电源选择,其中两个工作正常,但是第三个(companyType)的行为很奇怪-当您第一次进入表单时,该值为空。当您选择一个值时,它将从那时起为该记录保留(直到您刷新页面) 模板:Ember.js 电源选择不显示所选值,ember.js,ember-data,Ember.js,Ember Data,我的电源选择将不显示所选值 我在这个组件中有三个电源选择,其中两个工作正常,但是第三个(companyType)的行为很奇怪-当您第一次进入表单时,该值为空。当您选择一个值时,它将从那时起为该记录保留(直到您刷新页面) 模板: // templates/components/companies/edit-new-form.hbs {{#bs-form formLayout=formLayout model=company onSubmit=(action "save") as |form|}}
// templates/components/companies/edit-new-form.hbs
{{#bs-form formLayout=formLayout model=company onSubmit=(action "save") as |form|}}
<label>State:
{{#power-select
selected=company.state
options=states
onchange=(action "chooseState")
as |name|
}}
{{name}}
{{/power-select}}
</label>
<label>County:
{{#power-select
selected=company.county
options=countyNames
onchange=(action "chooseCounty")
as |name|
}}
{{name}}
{{/power-select}}
</label>
<label>Company Type:
{{#power-select class="select"
selected=company.companyType
options=companyTypes
onchange=(action "chooseCompanyType")
as |name|
}}
{{name.companyType}}
{{/power-select}}
</label>
{{/bs-form}}
这是路线和模型挂钩:
// routes/companies/edit.js
export default Ember.Route.extend({
model(params) {
var store = this.store;
return Ember.RSVP.hash({
companies: store.findRecord('company', params.company_id),
companyTypes: store.findAll('companyType')
});
}
});
获取companyType模型的路径是:
// routes/company-types.js
export default Ember.Route.extend({
model() {
return this.get('store').findAll('company-type');
}
});
我的模特们:
// models/company.js
export default DS.Model.extend({
companyName: DS.attr('string'),
street: DS.attr('string'),
county: DS.attr('string'),
city: DS.attr('string'),
state: DS.attr('string'),
zip: DS.attr('string'),
phone: DS.attr('string'),
email: DS.attr('string'),
fax: DS.attr('string'),
companyType: DS.attr('string')
});
// models/company-type.js
export default DS.Model.extend({
companyType: DS.attr('string')
});
查看Ember Inspector,根据我的模型,companyType的数据在那里,并且是一个字符串。当我从下拉框中选择一个值时,数据类型变为
问题是公司的公司类型
是字符串类型,而第三次选择的选项列表是公司类型
模型类型。这会在最初设置选定选项时造成不匹配
定义第三次电源选择,如下所示:
{#power-select class="select"
selected=company.companyType
options=companyTypesOptions
onchange=(action "chooseCompanyType")
as |name|
}}
{{name}}
{{/power-select}}
companyTypesOptions: Ember.computed('companyTypes.[]', function() {
return this.get('companyTypes').map((companyType)=> {
return Ember.get(companyType, 'companyType');
});
})
并在edit new form.js
中定义companyTypesOptions
,如下所示:
{#power-select class="select"
selected=company.companyType
options=companyTypesOptions
onchange=(action "chooseCompanyType")
as |name|
}}
{{name}}
{{/power-select}}
companyTypesOptions: Ember.computed('companyTypes.[]', function() {
return this.get('companyTypes').map((companyType)=> {
return Ember.get(companyType, 'companyType');
});
})
这样,;您将使选项列表和所选值均为string类型!不要忘记选项的类型和您通过的所选选项是否不同;你会有麻烦的!尽量避免这样 问题在于,公司
的公司类型
是字符串类型,其中第三个选项的选项列表是公司类型
模型类型。这会在最初设置选定选项时造成不匹配
定义第三次电源选择,如下所示:
{#power-select class="select"
selected=company.companyType
options=companyTypesOptions
onchange=(action "chooseCompanyType")
as |name|
}}
{{name}}
{{/power-select}}
companyTypesOptions: Ember.computed('companyTypes.[]', function() {
return this.get('companyTypes').map((companyType)=> {
return Ember.get(companyType, 'companyType');
});
})
并在edit new form.js
中定义companyTypesOptions
,如下所示:
{#power-select class="select"
selected=company.companyType
options=companyTypesOptions
onchange=(action "chooseCompanyType")
as |name|
}}
{{name}}
{{/power-select}}
companyTypesOptions: Ember.computed('companyTypes.[]', function() {
return this.get('companyTypes').map((companyType)=> {
return Ember.get(companyType, 'companyType');
});
})
这样,;您将使选项列表和所选值均为string类型!不要忘记选项的类型和您通过的所选选项是否不同;你会有麻烦的!尽量避免这样 谢谢,我想我明白你的意思了,但是有两个问题。首先,非常小,this.get('company.companyType.id')
应该是this.get('company.companyType')
。真管用!但第二个问题是,对于我之前犯的一个设计错误,这似乎是一个稍微复杂、不直观的解决方案。我该怎么办?从一个模型中填充下拉列表并将其结果分配到另一个模型中的字段的简单标准方法是什么?请发布您的模型好吗?如果我能看到公司
和公司类型
的模型,我会帮助您更好。我将我的模型添加到了原始帖子中。谢谢。@BradMathews忘了我最初写的东西。我在看过你们的模型后更新了答案。这就解决了!谢谢,我想我明白你的意思了,但是有两个问题。首先,非常小,this.get('company.companyType.id')
应该是this.get('company.companyType')
。真管用!但第二个问题是,对于我之前犯的一个设计错误,这似乎是一个稍微复杂、不直观的解决方案。我该怎么办?从一个模型中填充下拉列表并将其结果分配到另一个模型中的字段的简单标准方法是什么?请发布您的模型好吗?如果我能看到公司
和公司类型
的模型,我会帮助您更好。我将我的模型添加到了原始帖子中。谢谢。@BradMathews忘了我最初写的东西。我在看过你们的模型后更新了答案。这就解决了!