我的视图中有以下内容,使用跨度显示只读视图和输入显示编辑视图。
<span data-bind="{ ifnot:IsEditing, text:SystemName }"></span>
<input type="text" id="SystemName" data-bind="{ if:IsEditing, value:SystemName }" />
IsEditing observable 的评估结果为假。我正在返回具有以下层次结构的 JSON。
Project
.
.
Systems (collection)
SystemName
我正在通过 JQuery 加载值,使用以下内容创建可观察模型:
$.ajax({
type: "get",
url: "..",
success: function (d) {
var pList = [];
for (var p = 0, plen = d.Data.length; p < plen; p++) {
var proj = d.Data[p];
var systems = proj.Systems;
var sList = [];
proj = ko.mapping.fromJS(proj);
for (var s = 0, slen = systems.length; s < slen; s++) {
sList.push(ko.mapping.fromJS(systems[s]));
}
proj.Systems = ko.observableArray(sList);
pList.push(proj);
}
window["model"].projects(pList);
},
error: function (e) {
debugger;
alert("An error occurred");
}
});
加载时,每当加载模型并评估此表达式时,两个元素都会始终显示,而不是显示跨度并隐藏输入。当我将其更改为可见绑定时,仅显示跨度。当 IsEditing 评估为 false 时,为什么输入显示带有 if 绑定?