2017-07-21 22 views
1

我正在为此付出努力。我想从模板传递一个选择值到组件。 这里是我的模板Ember无法从模板获取选择值组件

<select name="bank" class="form-control" id="sel1" onchange={{action "updateValue" value="bank"}}> 
     {{#each banks as |bank|}} 
     <option value={{bank.id}}>{{bank.name}}</option> 
     {{/each}} 
     {{log bank.id}} 
     </select> 

这里是我的组件

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    store: Ember.inject.service('store'), 
    banks: Ember.computed(function() { 
    return this.get('store').findAll('bank'); 
    }), 
    didUpdate() { 
    const banques = this.get('banks'); 
    const hash = []; 
    banques.forEach(function(banque) { 
     hash.push(banque.get('name')); 
    }); 
    Ember.$(".typeahead_2").typeahead({ source: hash }); 
    }, 
    actions: { 
    expand: function() { 
     Ember.$('.custom-hide').attr('style', 'display: block'); 
     Ember.$('.custom-display').attr('style', 'display: none'); 
    }, 
     updateValue(selectedValue) { 
     this.set('bank.id', selectedValue); 
    }, 
     login() { 
     console.log(this.get('bank.id')); 


    } 
    } 
}); 

,我已经得到了这个美丽的错误:属性设置失败:对象路径“银行”无法找到或销毁。

任何想法?谢谢

+0

这只是我的模板的提取物。 – Djamel

回答

1

当您使用value属性时,则需要指定要从第一个参数(event)检索正确的属性名称。在你的情况下,你刚刚提到bank - 这是在event对象没有发现。这就是这个错误的原因。

onchange={{action "updateValue" value="target.value"}} 

内部组件

updateValue(selectedValue) { 
    this.set('bank.id', selectedValue); 
}, 
+0

所以我需要改变我的组件,以获得target.value而不是银行? – Djamel

+0

如果你只是单独设置,那么你可以使用mut helper,而不需要定义'updateValue'函数。即。 'onchange = {{action(mut bank.id)value =“target.value”}}' – kumkanillam

+0

更新了我的答案,并且需要'updateValue'函数代码 – kumkanillam