尽管我无法获取从选择下拉列表中选择的值,但我有以下 knockout View 模型,如下所示。我不明白为什么,但我可以使用 jquery 让它工作,但不能从实际的 ko 模型开始工作?!谁能明白为什么这对我来说是一个问题?
非常感谢! Razor
knockout 设置
(function(ns) {
var jsonObject = {
"People": [
{"Selected":false, "Text":"Tom", "Value":"1"},
{"Selected":false, "Text":"Jane", "Value":"2"},
{"Selected":false, "Text":"Sarah", "Value":"2"},
{"Selected":false, "Text":"Olive", "Value":"3"},
{"Selected":false, "Text":"Other", "Value":"4"}]};
var viewModel = new ViewModel(jsonObject);
ko.applyBindings(viewModel);
})(namespace("so.question"));
查看模型
var ViewModel = (function (dump) {
var panels = {
Area1: {
peopleArray: ko.observableArray(dump.People),
peopleSelected: ko.observable(self.peopleSelected)
}};
return panels;
});
这个有效
panels.Area.get = ko.computed(function () {
return $('#people option:selected').text()) // THIS WORKS
}, this);
失败
panels.Section1.fullName = ko.computed(function () {
return panels.Section1.) // BUT THIS FAILS!??
}, this);
标记
<!--This markup does show the array correctly-->
<select id="people" data-bind="options: panels.peopleArray, optionsText: 'Text'"></select>
最佳答案
问题是您不必向控件添加选择事件。有效的方法是订阅选择更改
您可以像这样使用订阅
viewModel.panels.Area1.peopleSelected.subscribe(function (data) {
console.log(data)
panels.Area1.peopleSelected(data);
//Set selection value to your observable variable
});
关于jquery - 在计算函数中检索 View 模型值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24401825/