简单的noob问题,当我知道解决方案时,可能会踢我自己。
我正在尝试将一个select的值传递给一个函数,所以我可以从数组中删除该项(所以我可以使用cut-down数组进行其他选择 - 基本上每个值只能选择一次),但是select正在传递'Object object'而不是所选的值。
我认为默认情况下选择值是作为第一个参数传递的,所以我不知道发生了什么。任何提示都很受欢迎。
HTML:
<p>Sample rate:
<select data-bind="options: sampleRates, value: selectedSampleRate0, event: {change: addSrate}"></select>
</p>
JS:
window.onload = startKnockout;
function AppViewModel() {
var self = this;
self.sampleRates = ko.observableArray([192000, 176400, 96000, 88200, 48000, 44100]);
self.selectedSampleRate0 = ko.observable();
self.addSrate = function (x) {
alert(x);
}
return self;
}
function startKnockout() {
ko.applyBindings(new AppViewModel());
};
答案 0 :(得分:3)
任何KO event
绑定处理程序的第一个参数是当前的datacontext,因此在您的情况下,您的AppViewModel
和第二个参数包含event
对象。
所以你需要写:
self.addSrate = function (viewModel, event) {
alert(event.target.value);
}
作为替代解决方案,您可以subscribe
更改selectedSampleRate0
以实现相同的功能:
self.selectedSampleRate0.subscribe(function (newValue){
alert(newValue);
})