在Ember上使用javascript动态更改选择索引值



所以,我在这个问题上挣扎了几个小时,谷歌上没有关于它的任何信息,所以我会发布答案,只是为了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在更改事件中获取所选选项的值,当您只是动态设置选项时,不会触发该值。现在,这对一些人来说似乎很明显,但对其他人来说可能不是。