淘汰赛:不能通过选择价值功能
问题描述:
简单的淘气问题,可能会踢我自己,当我知道解决方案。淘汰赛:不能通过选择价值功能
我想将select的值传递给一个函数,这样我就可以从数组中删除该项(所以我可以使用其他选择的裁减数组 - 基本上每个值只能选择一次) ,但是select是传递'Object object'而不是所选的值。
我以为默认选择值作为第一个参数传递,所以我不知道发生了什么。任何提示mucho赞赏。
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());
};
答
任何KO event
结合处理的第一个参数是当前的datacontext,所以你的情况你AppViewModel
和第二参数包含event
对象。
所以你需要写:
self.addSrate = function (viewModel, event) {
alert(event.target.value);
}
作为一种替代解决方案,您可以subscribe
在selectedSampleRate0
的变化来实现相同的功能:
self.selectedSampleRate0.subscribe(function (newValue){
alert(newValue);
})
真棒感谢。我不知道在哪里可以找到任何进入这个深度的文档,淘汰网站是非常基础的。据推测它假设了很多领域知识。 – 2014-09-02 06:11:37
大概如果我在remove语句中使用这个值,它会将该元素从数组中取出,以便使用该数组的进一步选择将包含更少的值? – 2014-09-02 06:17:17
也许你看过文档中的错误地方:你可以在这里找到事件绑定的细节:http://knockoutjs.com/documentation/event-binding.html#note-2-accessing-the-event-object -or-passing-more-parameters和订阅:http://knockoutjs.com/documentation/observables.html#explicitly-subscribeing-to-observables。关于删除:是的,如果你从下拉列表中删除该数组的项目:http://jsfiddle.net/ng3uw9t4/ – nemesv 2014-09-02 06:44:04