【发布时间】:2015-11-24 10:45:16
【问题描述】:
我尝试将两个计算选择与 Knockout 绑定: - 在页面加载时填充第一个选择(DropDownLinee) - 第二个选择(DropDownCorse) 在用户选择第一个选择项时填充
这是一个例子:
<select id="DropDownLinee" data-bind="options: ArrayLinee, optionsText: 'NomeLinea', optionsValue: 'NomeLinea', value: selectedLinea " data-toggle="dropdown"></select>
<select id="DropDownCorse" data-bind="options: ArrayCorse, optionsText: 'CodiceCorsa', optionsValue: 'CodiceCorsa', value: selectedCorsa " data-toggle="dropdown"></select>
function LineeViewModel() {
var self = this;
self.selectedLinea = ko.observable();
self.selectedCorsa = ko.observable();
self.ArrayLinee = ko.observableArray([]);
self.ArrayCorse = ko.observableArray([]);
$.getJSON('/Home/GetLines', function (data) {
self.ArrayLinee(data);
});
self.ArrayCorse = ko.computed(function () {
$.getJSON('/Home/GetRides',
{
LineaSelezionata: self.selectedLinea(),
DirezioneSelezionata: $('input[name=radio4]:checked', '.areaselezione').val()
},
function (data) {
debugger;
self.ArrayCorse(data);
});
});
}
lineeVM = new LineeViewModel();
ko.applyBindings(lineeVM);
当我检查加载“DropDownCorse”时出现此错误: 未捕获的错误:除非您指定“写入”选项,否则无法将值写入 ko.computed。如果要读取当前值,请不要传递任何参数。
谁能帮我解决这个问题???
提前致谢多纳托
【问题讨论】:
-
计算函数用于根据其他值计算值,没有写入。您已将
ArrayCorse定义为计算并在其中进行设置。这导致了问题。
标签: javascript jquery asp.net-mvc knockout.js