Ember js pushObject覆盖数组

时间:2017-04-13 11:18:30

标签: javascript ember.js

我正在研究Ember.js 我有一个选择元素,设置为发送值" onchange"我没有任何问题收到价值.. 但我想将每个选项保存到一个数组中并在标签中即时显示 这是我的template.hbs

<div class="panel-body">
    <div class="form-group">
      <select name="services" id="services" class="form-control" onchange={{action 'setValue' value="target.value"}}>
          <option> Select Services </option>
        {{#each services as |service|}}
          <option value="{{service.name}}">{{service.name}}</option>
        {{/each}}
      </select>
    </div>
    <div class="form-group">
      {{selectedService}}
      {{#each selectedService as |selection index|}}
        <span class="label label-primary">{{index}} {{selection}}</span>
      {{/each}}
    </div>
  </div>

这是我的控制器

  actions: {
setValue(ser){
  var selectedService = [];
  this.set('selectedService', ser);
  selectedService.pushObject(ser);

  console.log(selectedService);
}

我试图记录&#34; selectedService [1]&#34;并选择两个项目,但它不起作用,它继续覆盖第一个项目:(

1 个答案:

答案 0 :(得分:2)

您的案例的原因是您经常将selectedService设置为新数组。而不是那样;你需要获得控制器的selectedService并推送它。我的意思是:

export default Ember.Controller.extend({
  selectedService: [],

    actions: {
      setValue(ser){
        this.get('selectedService').pushObject(ser);
      }
    }
});

您为控制器初始化selectedService一次,并且可以不断推送到同一阵列。

请检查以下twiddle,我猜这很接近你想要的。