Javascript Knockoutjs-在使用foreach而不是options时,失去了选择值的双向绑定
我有两个选择控件 一个依赖另一个。举个简单的例子,假设第一个显示城市列表,而另一个显示每个城市的街道列表 最初加载页面时,显示街道的选择控件将显示所有可用街道。但是,一旦用户在第一次选择中选择了一个城市,第二次选择将被过滤以仅显示属于所选城市的街道 这在使用选项绑定时可以正常工作,但是,我需要生成optgroup的功能,而选项绑定不支持它,因此我必须使用foreach绑定 结果是,无论何时选择一个城市,都会出现两种意想不到的后果:Javascript Knockoutjs-在使用foreach而不是options时,失去了选择值的双向绑定,javascript,knockout.js,data-binding,html-select,viewmodel,Javascript,Knockout.js,Data Binding,Html Select,Viewmodel,我有两个选择控件 一个依赖另一个。举个简单的例子,假设第一个显示城市列表,而另一个显示每个城市的街道列表 最初加载页面时,显示街道的选择控件将显示所有可用街道。但是,一旦用户在第一次选择中选择了一个城市,第二次选择将被过滤以仅显示属于所选城市的街道 这在使用选项绑定时可以正常工作,但是,我需要生成optgroup的功能,而选项绑定不支持它,因此我必须使用foreach绑定 结果是,无论何时选择一个城市,都会出现两种意想不到的后果: 第二个选择(过滤的街道列表)似乎选择了所选城市的第一条街道,即使
首先,在select输入中添加一个空选项
<option value="">Select Street</option>
这样你可以同时解决两个问题
在你的小提琴上做了些改变,它就起作用了。尝试更新它
这是一个提琴-在使用
valueAllowUnset
时,不需要添加空白选项。只需将模型值设置为undefined
,而不是'
。显然,我的代码比提供的示例更复杂,因此我必须在viewModel.selectedStreet('')
之前添加很多逻辑。我希望有更好的解决办法。。不管怎样,谢谢你的解决方案,它似乎工作正常。
<option value="">Select Street</option>
viewModel.selectedCity.subscribe(function() {
viewModel.selectedStreet('');
}, viewModel);