我试图在用户使用ajax调用更改下拉选项时保存该值。这是我的下拉列表
<select data-bind="options: RefreshOptions, optionsText: 'Value', optionsValue: 'Key', value: RefreshSelectedValue, event: { change: SaveRefreshValue }"></select>
我正在绑定下拉值。但问题是更改事件 SaveRefreshValue 函数默认调用(页面加载)。 我尝试使用 optionsCaption:'',它的工作正常。但它在下拉列表中添加了一个空值,这是不需要的。
请帮我解决这个问题。
答案 0 :(得分:1)
如果RefreshSelectedValue
只是一个没有值的ko.observable()
,那么下拉列表中的第一项将是 SET 。这将导致您的更改事件触发。
也可以使用subscribe
而不是更改KO中的下拉菜单。这是一个fiddle。
更新:如果您坚持不添加optionCaption
,那么我可以建议一个黑客攻击(它不是很漂亮,但可以完成工作):创建一个{{1}下拉列表被更改为全局变量的次数。然后,如果计数超过一个,请执行你的ajax:fiddle
counter
答案 1 :(得分:1)
如果您不想拥有标题并且最初不想要任何选择,请使用valueAllowUnset
绑定选项:
<select data-bind="
options: RefreshOptions,
optionsText: 'Value',
optionsValue: 'Key',
value: RefreshSelectedValue,
valueAllowUnset: true"></select>