这是一个下拉列表和另一个检查绑定的元素:
<select data-bind =
"options: chains,
optionsText: function (item) { return item.BusinessModel['Name'] },
optionsCaption: 'Select...',
value: selectedChain">
</select>
<div data-bind = "text: selectedChain().Id"></div>
viewModel和初始化如下所示:
function ViewModel() {
this.chains = null;
this.selectedChain = ko.observable();
}
$.ajax({
url: "@Url.Action("Chains", "GetAll")",
success: function (result) {
var model = new ViewModel();
model.chains = result;
model.selectedChain(result[0]); // Why?
ko.applyBindings(model);
}
});
在组合框中选择optionsCaption
(“选择... ”)后,绑定的工作时间不会更长(不会重置参考中的旧值/新值集)元件)。这就是我需要初始化selectedChain
的原因。
它让我觉得将null
设置为selectedValue会出现问题?!
有人可以告诉我我做错了吗?
答案 0 :(得分:3)
您的第二个绑定text: selectedChain().Id
有问题 - 如果您选择“选择...”选项,则selectedChain
的值未定义,您无法执行.Id
未定义。您需要添加一个检查,例如:
<!-- ko if: selectedChain -->
<div data-bind="text: selectedChain().Id"></div>
<!-- /ko -->
或:
<div data-bind="text: selectedChain() && selectedChain().Id"></div>