javascript - Ember.js Action Handlebars {{action}} 不适用于 <option> html 标签

标签 javascript jquery ember.js handlebars.js

我希望当我点击我拥有的下拉菜单中的一个选项时触发一个 Action 。如果将 {{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>

即使是有效的示例,也只有在我单击向下箭头时才会触发。哦,ember Handlebars ,你的逻辑让我无法理解。

最佳答案

第一个示例不起作用,因为默认情况下 {{action}} 助手将处理 onclick 事件。通常,onclick 事件不应放在每个选项上,而应处理 select 元素上的 onchange 事件以找出 >option selected(SO 上有很多线程讨论这个,例如 HTML javascript select action)。

因此,为了处理选择上的 onchange 事件,可以输入如下内容,

http://emberjs.jsbin.com/jukicaxe/1/edit

健康管理系统

<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 级别处理的。

关于javascript - Ember.js Action Handlebars {{action}} 不适用于 <option> html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22458666/

相关文章:

javascript - 打开 Ember 服务时出错

javascript - Ember.js 自动聚焦于刚刚创建的模板

javascript - 如何使用 javascript 导航到正确的 div?

javascript - 在按键上缩放我的图像

javascript - 如何轻松地将图像置于 DIV 中心?

javascript - 在动态创建单选按钮方面需要帮助

javascript - 从二维数组中提取元素

javascript - 使用 jquery 隐藏带有名称的元素

jquery - 如何在激活时更改导航项颜色?

ember.js - Ember js从以前的路线获取对象