2017-04-13 65 views
0

我正在Ember.js 和我有一个select元素设置为发送值“onchange”我收到的值没有任何问题.. 但我想保存每一个选择到一个数组并显示它在标签 这里飞是我template.hbsEmber js pushObject覆盖阵列

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

我试图登录“selectedService [1]”和选择两个项目,但事实并非如此工作它不断覆盖第一项:(

回答

2

你的情况的原因是你不断设置selectedService到一个新的阵列。取而代之的是;你需要获得控制器的selectedService并推送到它。我指的是以下几点:

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

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

您的控制器初始化selectedService一次,就可以不断地推到同一阵列。

您可以检查以下twiddle,我猜这是接近你想要的。

+0

仍然给我一个错误“ReferenceError:selectedService没有定义”这已经2个小时了..我讨厌编程:( – Haboosh

+1

我会为你准备一个旋律,不要放弃! – alptugd

+0

我会很感激你。 。我会等待..非常感谢 – Haboosh