所以,我在这个问题上挣扎了几个小时,谷歌上没有关于它的任何信息,所以我会发布答案,只是为了SEO,为像我这样想搜索这个问题并立即找到解决方案的懒惰人服务。如果你正在构建一个bookmarklet来为你填充一个大表单,通常是当你必须更改并多次测试它时,或者构建某种自动功能测试来填充表单并提交它时,仅仅用javascript更改selectedIndex
不会将所选选项传递给Ember,因为你需要实际触发change
事件,所以想象你有这样的设置:
<select id='test'>
<option value="1">First Option</option>
<option value="2">Second Option</option>
</select>
并且您希望通过javascript和submit进行选择和选择。
只进行
document.getElementById('test').selectedIndex = 1;
不会起作用,你需要做:
document.getElementById('test').selectedIndex = 1;
$('#test').trigger('change');
因为Ember在更改事件中获取所选选项的值,当您只是动态设置选项时,不会触发该值。现在,这对一些人来说似乎很明显,但对其他人来说可能不是。