【问题标题】:How do I pass data from Ember Power Select?如何从 Ember Power Select 传递数据?
【发布时间】:2016-05-29 16:15:59
【问题描述】:

我是 Ember 的初学者,所以我可能遗漏了一些非常简单的东西。

我有一个表单,其中包含用于文本输入的 Ember 输入助手和用于从下拉列表中选择内容的 Ember Power Select 组件。

表单输入有效,并且该操作使用操作帮助程序成功保存了文本输入中的值。但是,Ember Power Selects 不发送任何值。

组件.hbs

 {{#power-select
    selected=telaviv
    class="form-dropdown"
    options=cities
    onchange=(action "chooseCity")
    as |city|}}
  {{city}}
{{/power-select}}

组件.js

import Ember from 'ember';

export default Ember.Component.extend({
    cities: ['Tel Aviv', 'Jerusalem', 'Haifa', 'Be\'er Sheva', 'Givat Shmuel'],
    telaviv: 'Tel Aviv',

    actions: {
      chooseCity(city) {
        this.set('telaviv', city);
        // this.calculateRoute();
        // this.updatePrice();
      }
    }
  });

所有表单组件都嵌套在另一个组件中。

哈佛商学院:

    <div class="row">
  <div class="col-md-2"></div>
    <div class="new-date-form-container col-md-8">
      I took a date to a {{type-dropdown}}
      called
      {{input dropdownClass="slide-fade"
        type="text"
        class="form-textbox"
        placeholder="Place"
        value=place
        maxlength=30}}
      <br>
      <br>
      It was in
      {{city-dropdown}}
      <br>
      <br>
      and the date cost about
      {{price-dropdown}}
      I'd describe the place as
      {{atmosphere-dropdown}}
      so it works for
      {{input
        type="text"
        class="form-textbox"
        placeholder="Suitable for"
        value=suitablefor
        maxlength=20}}
      <br>
      <br>
      Here's an insider tip:
      {{input
        type="text"
        class="form-textbox"
        placeholder="Pro Tip"
        value=protip
        maxlength=70}}
      <br>
      <br>
      Their website is:
      {{input
        type="text"
        class="form-textbox"
        placeholder="Website"
        value=website}}
      <br>
      <br>
      It looks like this:
      {{input
        type="text"
        class="form-textbox"
        placeholder="Image"
        value=imageurl}}
      <br>
      <button {{action 'savedate' date}} class="submitbutton">Submit</button>
    </div>
  <div class="col-md-2"></div>
</div>

及其 JS:

import Ember from 'ember';


export default Ember.Component.extend({
  store: Ember.inject.service(),
  actions: {
      savedate: function() {
          var newdate = this.get('store').createRecord('date', {
              imageurl: this.get('imageurl'),
              place: this.get('place'),
              type: this.get('type'),
              city: this.get('city'),
              price: this.get('price'),
              atmosphere: this.get('atmosphere'),
              suitablefor: this.get('suitablefor'),
              protip: this.get('protip'),
              website: this.get('website')
          });
var component = this;
          newdate.save().then(function() {
            alert('Date submission successful');
            component.setProperties({
                imageurl: '',
                place: '',
                type: '',
                city: '',
                price: '',
                atmosphere: '',
                suitablefor: '',
                protip: '',
                website: ''
            });
          }, function() {
            // handle error (show error message, retry, etc.)
            alert('Please try again');
          });

      }
  }
});

我错过了什么?

感谢您的帮助!

【问题讨论】:

    标签: javascript forms ember.js ember-data ember-cli


    【解决方案1】:

    这里的问题与 Ember Power Select 本身无关。

    在您的示例中,{{city-dropdown}} 组件是隔离的。该组件正在工作,但正在对该组件进行本地更改。它正在设置属性名称telaviv 的值(奇怪的名称,因为telaviv 属性可能包含“耶路撒冷”字符串)。

    您应该将一些数据传递给该组件 ({{city-dropdown city=city}}) 并让 EPS 在 onchange 操作中更改该值。

    【讨论】:

    • 创作者本人的回答!非常感谢。现在一切正常。感谢您创建此插件!
    • 其实还有一个问题。如何使该字段成为必填项?
    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2013-05-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    相关资源
    最近更新 更多