当我点击我的下拉列表中的某个选项时,我希望触发操作。如果{{action}}放在其他任何地方,这种方法很好。
以下不起作用
<div class="permit-time-dropdown select">
<select>
<option selected="">Nov. 19, 2013 - Dec. 19, 2013</option>
<option {{action 'dateRangeSelected' this bubbles=false}} id="customDateRangeSelected">Custom</option>
</select>
</div>
以下工作
<div {{action 'dateRangeSelected' this bubbles=false}} class="permit-time-dropdown select">
<select>
<option selected="">Nov. 19, 2013 - Dec. 19, 2013</option>
<option id="customDateRangeSelected">Custom</option>
</select>
</div>
即使只有单击向下箭头时触发的示例也会触发。哦,灰烬把手,你的逻辑逃脱了我。
答案 0 :(得分:3)
第一个示例不起作用,因为默认情况下{{action}}
帮助程序将处理onclick
事件。通常,onclick
事件不应放在每个选项上,而是应该处理onchange
元素上的select
事件以找出所选的option
(有很多线程)所以讨论这个例如HTML javascript select action)。
因此,为了处理选择中的onchange
事件,可以输入以下内容,
http://emberjs.jsbin.com/jukicaxe/1/edit
<强> HBS 强>
<script type="text/x-handlebars" data-template-name="index">
<div class="permit-time-dropdown select">
<select {{action 'dateRangeSelected' this on="change" bubbles=false target="view"}}>
<option id="date1" selected="">Nov. 19, 2013 - Dec. 19, 2013</option>
<option id="customDateRangeSelected">Custom</option>
</select>
</div>
</script>
<强> JS 强>
App.IndexView = Ember.View.extend({
actions:{
dateRangeSelected:function(){
alert(this.$('select').val());
}
}
});
在这个例子中,由于没有模型相关,我选择使用jquery从DOM中检索值,因此操作在view
级别处理。