您好,我正在尝试在 Knockout js 中获取下拉列表的选定值,以便我可以根据选择隐藏/显示其他元素。以下是我尝试过的。 我能够在单击按钮时获得正确的值但在下拉选择更改时无法获得正确的值,这是怎么回事。
下面是我的代码。该按钮给出了正确的值,但下拉选择更改事件给出了先前的值而不是所选值。
JS
function ViewModel() {
var self = this;
self.optionValues= ko.observableArray(["Test1", "Test2", "Test3"]);
self.selectedValue = ko.observable();
self.save = function() {
alert(self.selectedValue());
}
}
ko.applyBindings(new ViewModel());
HTML
<select data-bind="event:{ change: save},options: optionValues, value: selectedValue"></select>
<button data-bind="click: save">Save</button>
最佳答案
而不是 change
事件绑定(bind),你应该 subscribe
directly在您的 selectedValue
可观察对象上,并从那里调用您的逻辑:
function ViewModel() {
var self = this;
self.optionValues = ko.observableArray(["Test1", "Test2", "Test3"]);
self.selectedValue = ko.observable();
self.selectedValue.subscribe(function(newValue) {
self.save();
});
self.save = function() {
alert(self.selectedValue());
}
}
ko.applyBindings(new ViewModel());
HTML:
<select data-bind="options: optionValues, value: selectedValue"></select>
<button data-bind="click: save">Save</button>
演示 JSFiddle .
关于javascript - KnockOutJS Show 在下拉选择更改时隐藏元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37902248/