当我以编程方式更新选择UI时,KnockoutJS使更改事件触发

时间:2018-09-27 16:25:28

标签: javascript jquery knockout.js

<select class="form-control" 
    data-bind="attr: {name: 'id_' + $index(), id:'id_' + $index()},
               event:{ change:$parent.Collect}">
    <option value="" selected="" disabled="">Select a date to collect from</option>
    <option data-bind="attr:{value:$data.DeliveryDate},
                       value="09/28/2018">Friday 28 September</option>
</select>

好,所以我有一个任务,可以以编程方式更新AB测试的选择内容,例如,我已经做过很多次了。

$('.form-control').val('09/28/2018').change();

这将更新UI,但似乎没有调用敲除绑定上的change事件。我无法更新源代码,需要在我的AB工具中找到一种方法。

我的淘汰赛知识非常有限,我已经安装了devtool进行淘汰赛,并且尝试通过传递上下文来查找绑定,但是我无法弄清楚是否甚至可以使用$parent.Collect方法执行。

我们非常感谢您的帮助...

1 个答案:

答案 0 :(得分:0)

您应该具有与选择内容绑定的值。如果这样不能解决问题,请除去select元素中的$ parent表单更改($ parent.Collect)事件。 “ selectedValue”在视图模型中是可观察的。处理在Collect函数内部可观察到的selectedValue。

<select class="form-control" 
    data-bind="attr: {name: 'id_' + $index(), id:'id_' + $index()},
               value: selectedValue, event:{ change:$parent.Collect}">
    <option value="" selected="" disabled="">Select a date to collect from</option>
    <option data-bind="attr:{value:$data.DeliveryDate},
                       value="09/28/2018">Friday 28 September</option>
</select>