Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 电源选择不显示所选值_Ember.js_Ember Data - Fatal编程技术网

Ember.js 电源选择不显示所选值

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|}}

我的电源选择将不显示所选值

我在这个组件中有三个电源选择,其中两个工作正常,但是第三个(companyType)的行为很奇怪-当您第一次进入表单时,该值为空。当您选择一个值时,它将从那时起为该记录保留(直到您刷新页面)

模板:

// 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忘了我最初写的东西。我在看过你们的模型后更新了答案。这就解决了!